我似乎无法获得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/