【发布时间】:2018-05-22 14:05:02
【问题描述】:
我正在尝试将一个数组复制到另一个数组,但出现了该错误:
[Vue 警告]:渲染错误:“TypeError:无法读取属性‘名称’ 未定义”
我的代码:
props: {
languages: {
required: true,
},
},
data() {
return {
translations: [],
}
},
mounted() {
this.setTranslations();
},
methods: {
setTranslations() {
this.translations = this.languages.slice(0);
}
},
结果相同:
this.translations = this.languages
和:
let temp = this.languages.slice(0);
this.translations = temp;
编辑
如果我评论那一行:
// this.translations = this.languages.slice(0);
错误消失。
这也不起作用:
this.languages.forEach( function (item) {
this.translations.push(item);
});
我收到错误:
挂载钩子错误:“TypeError:无法读取属性‘翻译’ 未定义”
但这有效:
let temp = this.languages.slice(0);
temp.forEach( function ( lang ) {
Vue.set(lang, 'value', {});
Vue.set(lang.value, 'name', "");
Vue.set(lang.value, 'metaKeywords', "");
Vue.set(lang.value, 'metaDescription', "");
});
this.translations = temp;
虽然这样我的语言数组与翻译数组相同,但这不是我想要的。
我做错了什么?
【问题讨论】:
-
你能添加你的html模板吗?接缝它尝试渲染 {{something.name}} 并且某些东西不存在。
-
它不是来自模板,因为如果我评论那行: // this.translations = this.languages.slice(0);这个错误消失了。
-
@Lunfel 其实你是对的,问题出在模板上,因为它找不到“名称”。但是我不知道为什么当我尝试复制数组时会出现这个错误。如果我评论该行,“名称”也不存在。