我很难让vue-resource在2.0RC的.vue组件中工作。它在1.x中运行良好,但是现在在从组件方法中访问$http时,似乎缺少了this方法。
我正在使用webpack,我的app.es6文件如下所示:
import Vue from 'vue/dist/vue.js'
import VueRouter from 'vue-router'
import VueResource from 'vue-resource'
import Login from './Login.vue'
Vue.use(VueResource);
Vue.use(VueRouter);
const router = new VueRouter({
mode: 'history',
base: __dirname,
routes: [
{ path: '/login', component: Login }
]
})
const App = new Vue({
router: router,
el: "#vue-app",
template: '<div><router-view></router-view></div>',
created: function(){
console.log('data this: ', this.$http()) //this $http.get() works
}
})我的Login.vue看起来像:
<template>
<div>
<h2>Log In</h2>
<button class="btn btn-primary" @click="submit()">Access</button>
</div>
</template>
<script type="text/ecmascript-6">
export default {
methods: {
submit: function () {
console.log('Login this.$http()', this.$http.get) //this $http.get() does not work
}
}
}
</script>一些理论是:
Vue.extend(...) and Vue.start(...)转换为我现在使用的new Vue()语法有关。vue-router语法做一些不同的事情。谢谢你的帮助。
发布于 2016-08-24 09:07:13
我得到了一个在Vue帮助论坛上回答。这个问题之所以出现,是因为我使用的是Vue的独立版本,但在Webpack中并没有对其进行完全的别名,因此Webpack加载了两个不同的版本。
用户LinusBorg回答道:
您需要独立构建,但是webpack也在加载运行时专用构建,因此您最终在项目中得到了两个版本的Vue --一个有vue资源,另一个没有。 如果要保持独立构建,必须在webpack配置中添加一个别名:
vue: 'vue/dist/vue'。
万一其他人有这个问题,并且和我一样被webpack弄糊涂了,那就稍微明确一点:
Webpack正在加载两个不同版本的vue.js,一个来自我的文件中的import语句,一个来自webpack *.vue模块加载器。我修复的确切方法是将以下内容添加到我的webpack-config.js中
resolve: {
alias: {vue: 'vue/dist/vue.js'}
},在我的app.es6文件中,我还必须将导入Vue从'vue/dist/vue.js'更改为从'vue'导入Vue。
https://stackoverflow.com/questions/38959538
复制相似问题