我似乎无法让vue-resource与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: $urlpackage.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的现有答案都没有带来任何结果。请帮帮忙。
发布于 2016-06-23 03:39:19
您应该用http替换$http
import Vue from 'vue'
import VueResource from 'vue-resource'
Vue.use(VueResource)
export default {
created: () => {
Vue.http.get(...)
}
}此外,将VueResource安装到main文件中也是一种很好的做法,然后,我们可以像@ said所说的那样使用this关键字。
要实现这一点,您应该更改arrow function,因为this引用全局对象:
// refers to the global object
created: () => {}
// refers to the Vue component
created () {
this.$http.get(...)
}发布于 2016-06-23 00:56:44
您是否尝试过在根vue实例中添加var VueResource = require('vue-resource');?还要添加Vue.use(VueResource)。
发布于 2016-06-22 20:50:02
使用Vue.use(VueResource)在main.js中添加插件后,它会将$http属性添加到所有Vue实例中。你不需要在你的组件文件中重做。然后您只需使用this.$http
created: () => {
this.$http.get('/my/api/123',
//...
);
}https://stackoverflow.com/questions/37968135
复制相似问题