Vue.js не может скопировать массив в другой массив - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь скопировать массив в другой массив, и я получаю эту ошибку:

[Vue warn]: Ошибка при рендеринге: "TypeError: Невозможно прочитать свойство 'name' изundefined "

Мой код:

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);
});

Iполучаю ошибку:

Ошибка в смонтированном хуке: «Ошибка типа: невозможно прочитать свойство« translations »of undefined»

Но это работает:

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 голосов
/ 23 мая 2018

На самом деле эта ошибка происходит из шаблона.Шаблон зависит от "имени" в моем массиве переводов.И это не может найти это.Вот почему мой последний код работает.Я не знаю, почему консоль не показывает ошибку, когда я комментирую строку копирования массива.Он должен показать ту же ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...