【发布时间】:2017-07-26 14:56:43
【问题描述】:
我有这种情况:我有一个不是 SPA 的 Laravel 应用程序。但我在我的应用程序的许多组件中使用 Vue,使用单文件组件等等。
但出于性能原因,我只想在某些页面中加载一些组件。但是,当我在第二个 .js 文件中注册一个组件时,我总是会收到这样的错误:
属性或方法“地址”未在实例上定义,但在渲染期间引用。确保在 data 选项中声明反应数据属性。 (见于)
我的结构是这样的:
app.js
window.Vue = require('vue');
import ModalMessage from './../components/ModalMessage.vue';
import FlashMessage from './../components/FlashMessage.vue';
window.MainVue = new Vue({
el: '#app',
data: {
loading: false
},
components: { ModalMessage, FlashMessage }
});
所有这些工作都很好。但是当我引入一个新的.js 文件时,我总是得到上面提到的错误。
例子:
account.js
window.UserAddresses = new Vue({
el: '#user-addresses',
data: {
addresses: []
},
methods: {
}
});
#user-addresses 的 HTML 是:
<div id="user-addresses">
<table class="table">
<tr v-for="address in addresses">
<td>testing</td>
</tr>
</table>
</div>
我总是得到错误:
属性或方法“地址”未在实例上定义,但在渲染期间引用。确保在 data 选项中声明反应数据属性。 (见于)
在这个产生错误的内部页面中,我的 JS 文件是这样包含的:
<script src="assets/js/app.js"></script>
<script src="assets/js/account.js"></script>
account.js Vue 实例是在产生错误之前挂载的。
我的问题是:有没有办法在多个 .js 文件中使用 Vue?我也不想在我的根 Vue 实例中声明我所有的子组件数据。
有没有办法让它工作?
更新
我正在使用 webpack 来编译所有文件。
【问题讨论】:
-
您是否在 html 文件中包含所有 vue 实例的脚本
-
刚刚在问题中添加了如何包含文件。
-
在其他脚本文件中包含额外的 Vue 应该没有问题,所以这里发生了其他事情。
#user-addresses是否可能在 MainVue 的模板中? -
div#user-addresses是否出现在您的 html 中的#app中? -
@LuisDalmolin 否。在这种情况下,它需要是一个组件。但是您可以很容易地将其定义为另一个文件中的组件。
标签: vuejs2 vue-component vue.js