我似乎无法获得vue资源来与vueify一起工作。我定义了一个vue组件,该组件包含在main.js文件中。

import Vue from 'vue'
import MyComponent from './my-component.vue'

new Vue({
    el: '#app',
    components: {
        myComponent: MyComponent
    }
});

我的vue组件文件如下所示:

<script>
    import Vue from 'vue';
    // import VueResource from 'vue-resource'
    // Vue.use(VueResource);

    export default {
        template: '#my-component-template',

        created: () => {
            Vue.$http.get('/my/api/123',
                data => {
                    console.log(data)
                }, err => {
                    console.log("Error");
                    console.error(err);
                }
            );
        }
    }
</script>

在当前状态下,我收到此错误:

Uncaught TypeError: Cannot read property 'get' of undefined

如果我在组件文件中注释掉有关vue-resource的两行,则收到的错误将变成这样:

Uncaught TypeError: Cannot redefine property: $url

package.json:

{
  "private": true,
  "scripts": {
    "prod": "gulp --production",
    "dev": "gulp watch"
  },
  "devDependencies": {
    "bootstrap-sass": "^3.3.6",
    "gulp": "^3.9.1",
    "laravel-elixir": "^5.0.0",
    "laravel-elixir-vueify": "^1.0.3",
    "vue": "^1.0.25",
    "vue-resource": "^0.8.0"
  }
}

Gulpfile:

var elixir = require('laravel-elixir');
require('laravel-elixir-vueify');

elixir(function(mix) {
    mix.browserify('main.js');
});

关于SO的所有现有答案均未带来任何结果。请帮忙。

最佳答案

您应该将$http替换为http:

import Vue from 'vue'
import VueResource from 'vue-resource'

Vue.use(VueResource)

export default {
  created: () => {
    Vue.http.get(...)
  }
}

另外,将VueResource安装到main文件中也是一个好习惯,然后,我们可以使用@Jeff所说的this关键字。

为此,您应该更改arrow function,因为this引用了全局对象:

// refers to the global object
created: () => {}

// refers to the Vue component
created () {
  this.$http.get(...)
}

关于laravel - 用vue-resource进行Vueify,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37968135/

10-09 08:15