Vue.js 无法使用$http或Vue.http
跟进 一系列评论回答了这个问题。下面是import/require语句起作用的原因。我以为他们也做了同样的事 原始问题 我正在尝试使用Vue.js 无法使用$http或Vue.http,vue.js,vuejs2,vue-resource,Vue.js,Vuejs2,Vue Resource,跟进 一系列评论回答了这个问题。下面是import/require语句起作用的原因。我以为他们也做了同样的事 原始问题 我正在尝试使用vue资源对API进行REST调用。到目前为止,我有一个可以正常工作的Vue应用程序,它也使用了Vue材料,并且工作得很好。我只是在获取对http“对象”的引用时遇到了问题,通过它我可以进行get/post/put调用 堆栈基本上是vue cli,用于创建Web包/npm项目vue资源肯定在包中。json: "vue": "^2.2.1", "vue-resour
vue资源
对API进行REST调用。到目前为止,我有一个可以正常工作的Vue应用程序,它也使用了Vue材料
,并且工作得很好。我只是在获取对http“对象”的引用时遇到了问题,通过它我可以进行get/post/put调用
堆栈基本上是vue cli
,用于创建Web包/npm项目vue资源
肯定在包中。json
:
"vue": "^2.2.1",
"vue-resource": "^1.3.1"
main.js
如下所示:
import Vue from 'vue';
Vue.use(require('vue-material'));
Vue.use(require('vue-resource'));
import App from './App.vue'
console.log(this.$http);
new Vue({
el: '#app',
//other stuff
});
console.log(this.$http);
我放置了那些console.log
语句,因为我最初遇到了如下错误
cannot read property 'post' of undefined vue resource
果不其然,这两条日志语句都会产生“undefined”<代码>Vue.http产生相同的结果
我做错了什么?有趣的是,vue材质
运行良好
更新
在Vue实例内部进行检查仍会产生未定义的结果:
mounted: () => {
console.log(this.$http);
}
更新2——有效的解决方案
谢谢你的评论,它们的结合解决了这个问题。首先更改要导入的要求
:
import VueResource from 'vue-resource';
Vue.use(VueResource);
并使用为装入的创建函数的旧方法:
mounted: function () {
console.log(this.$http);
}
您需要在Vue实例方法中检查此。$http
:
import Vue from 'vue';
Vue.use(require('vue-resource'));
new Vue({
el: '#app',
mounted: function() {
console.log(this.$http);
}
})
你可以试试别的办法。从Vue网站: “别名
axios
到Vue.prototype.$http
。然后您可以在任何Vue实例中使用类似的方法。$http.get
”
Vue.prototype.$http=axios
...
这是$http
.get('https://jsonplaceholder.typicode.com/users')
.然后(功能(响应){
vm.users=response.data
})
...
只运行上面的代码对我来说很有用,所以在你的问题中,一定有一些代码遗漏了。请参阅我的评论。一定有什么教程什么的。但是结果是导入了vue资源
@thanksd谢谢,我在这个文件中只遗漏了数据、激活和方法属性,所有这些属性都是空的。他肯定有挂载的
函数定义问题。并同意导入或require都应该起作用,但require在另一种情况下肯定不起作用。此外,在最新版本中,它看起来像是Vue。不再需要使用。哦,是的,@user2393012,你在问题中定义挂载
的方式无法提供正确的此
参考。昨天回答了这个问题。
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.15.2/axios.js"></script>
<script>
Vue.prototype.$http = axios
...
this.$http
.get('https://jsonplaceholder.typicode.com/users')
.then(function(response) {
vm.users = response.data
})
...
</script>