Vue.js无法将数组复制到另一个数组

时间:2018-05-22 14:05:03

标签: arrays vue.js copy

我试图将数组复制到另一个数组并且我收到了这个错误:

  

[Vue警告]:渲染错误:" TypeError:无法读取属性' name'   未定义"

我的代码:

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;

虽然这样我的语言数组变得和翻译数组一样,但这不是我想要的。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

实际上这个错误来自模板。模板取决于" name"在我的翻译数组。它找不到它。这就是我最后一段代码的原因。 我不知道为什么在我评论数组拷贝行时控制台没有显示错误。它应该显示相同的错误。