Vue.js中ES6 import/export结合const的模板渲染异常求助
解决Vue模板无法渲染导入模块中对象的问题
这问题我之前处理过,核心原因很明确:Vue模板的作用域仅限于组件实例本身,你直接在模板里引用settings.availableDatabaseColumns,模板找不到这个变量——因为它只是你在组件脚本里导入的模块变量,并没有挂载到组件实例上。而mounted钩子属于组件实例的生命周期方法,脚本里的变量在钩子函数里是可以直接访问的,所以你能通过console.log读到值。
下面给你两种可行的解决方法:
方法1:将模块变量存入组件data
把导入的availableDatabaseColumns赋值给组件data里的属性,这样模板就能访问到了:
<script> import * as settings from '../settings/settings' export default { data() { return { // 将模块变量挂载到组件实例 dbColumns: settings.availableDatabaseColumns } } } </script> <template> <!-- 现在模板可以访问实例上的dbColumns了,记得给v-for加key --> <p v-for="(item, key) in dbColumns" :key="key">{{ item }}</p> </template>
方法2:使用计算属性(推荐用于静态/衍生数据)
如果这个配置对象是静态的(不会动态修改),用计算属性更优雅,而且能保持数据的引用关系:
<script> import * as settings from '../settings/settings' export default { computed: { dbColumns() { return settings.availableDatabaseColumns } } } </script> <template> <p v-for="(item, key) in dbColumns" :key="key">{{ item }}</p> </template>
额外注意点
- 别忘了给
v-for循环加上:key属性,这是Vue的要求,能避免渲染时的性能问题和警告。 - 虽然你在
mounted里能读到值,说明导入路径没问题,但如果后续碰到类似问题,还是要先确认模块导入路径是否正确。
内容的提问来源于stack exchange,提问作者Torben
相关产品推荐
相关产品推荐

