Вызов функции задачи перед повторным рендерингом в vuejs - PullRequest
2 голосов
/ 06 ноября 2019

У меня проблема, когда я добавляю элемент в мой bdd и мой клиент view (с $set), вызывается функция. Но у меня есть ошибка для доступа к данным, с console.log, я вижу, что новые данные добавлены, но данные внутри объекта - нет.

Это моя ошибка:

vue.esm.js? efeb: 610 [Vue warn]: ошибка рендеринга: «Ошибка типа: невозможно прочитать свойство 'id' из неопределенного"

for (var i = 0; i < this.assignments.length; i++) {
   var date1 = new Date(date);
   var date2 = new Date(this.assignments[i].start);

   if (user === this.assignments[i].User.id) {

Ответы [ 2 ]

2 голосов
/ 06 ноября 2019

Ошибка говорит о том, что вы получаете доступ к неопределенному значению, в этом случае User из this.assignments[i].User не определено.

Редактировать: Для проверки обязательно проверьте все

if (this.assignments && this.assignments[i] && this.assignments[i].User && user === this.assignments[i].User.id)
0 голосов
/ 06 ноября 2019

Хорошо. Если я вижу такую ​​проблему, я всегда пытаюсь поставить debugger сразу после console.log, чтобы остановить выполнение скрипта. Не всегда доверяйте console.logs, кто-то когда-нибудь сказал.

Вероятно, с этим отладчиком console.log покажет что-то другое, и это потому, что он содержит ссылку, поэтому он заполняется позже. (вы сможете увидеть это в консоли)

В любом случае ... То, что вы можете наверняка попытаться сделать, это await this.$nextTick() - ожидание следующего рендеринга, затем продолжить. Поместите это прямо перед вашим неработающим кодом. .

Если не можете попробовать запрещенную технику - оберните свой код в

setTimeout(()=>{
 ...your code which needs to wait for render
},0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...