【发布时间】:2018-07-09 13:19:27
【问题描述】:
为什么我得到的 Vue 在此处未定义为错误:
export default {
state: {
projects: {
loading: true,
failed: false,
lookups: [],
selectedId: 0
}
},
mutations: {
loadingProjectLookups (state, payload) {
state.projects.loading = true;
state.projects.failed = false;
}
},
actions: {
loadProjectLookups (context) {
return new Promise((resolve) => {
// VUE NOT DEFINED HERE:
Vue.http.get('https://my-domain.com/api/projects').then((response) => {
context.commit('updateProjectLookups', response.data);
resolve();
},
response => {
context.commit('failedProjectLookups');
resolve();
});
});
}
}
}
这是我的 vue 配置:
'use strict';
import Vue from 'vue';
import Vuex from 'vuex';
var VueResource = require('vue-resource');
/* plugins */
Vue.use(Vuex);
Vue.use(VueResource);
/* stores */
import importPageStore from './apps/import/import-page-store';
/* risk notification import */
import ImportApp from './apps/import/import-app.vue';
if (document.querySelector("#import-app")) {
var store = new Vuex.Store(importPageStore);
new Vue({
el: '#import-app',
store,
render: h => h(ImportApp)
});
}
我的理解是 Vue 是全局定义的,我看不出它为什么没有定义。如果我将import Vue from 'vue' 添加到我的商店,则会收到一条消息,指出未定义http。所以我需要弄清楚为什么 Vue 似乎无法在全球范围内使用,因为我不应该这样做。
我正在使用 webpack 来构建我的 vue 组件。我有使用这种方法呈现的其他页面,它们工作得很好。但是这个没有?老实说,我不知道为什么,因为我看不到任何差异。页面呈现并工作。我可以看到 Vue 正在工作。怎么可能是未定义的?
【问题讨论】:
-
document.querySelector('#import-app')条件是否真实?运行此脚本时,您是否有 ID 为import-app的元素? -
是的,该应用程序确实呈现并运行。但是没有定义对
Vue的引用。 -
哦,我明白了,在您的组件中,您使用的是
Vue.http,您需要在该文件中导入Vue,或者只使用this.$http。 -
我已经尝试过了,如果我使用这个。$http 我得到
_this.$http is undefined。 -
渲染函数使用
ImportAppStore而不是ImportApp,store变量应该使用ImportPageStore而不是importPageStore
标签: javascript vue.js vue-component vuex vue-resource