#javascript #vue.js
#javascript #vue.js
Вопрос:
Я новичок в Vue.js и пытается отобразить данные, которые запрашиваются с сервера. Я создал новое приложение Vue и определил метод:
methods: {
getData: function() {
// making a request, parsing the response and pushing it to the array.
console.log(arr);
return arr;
}
}
Метод работает нормально, и я могу записать массив в консоль одним нажатием кнопки.
<button v-on:click="getData">Get me some data</button>
Однако я не уверен, как на самом деле использовать этот массив в приложении. Я хотел бы сохранить его в свойстве, а затем отобразить его для пользователя. Сначала я думал, что я мог бы использовать вычисляемые свойства, подобные этому:
computed: {
values: function() {
return this.getData;
}
}
… и отображать его пользователю с for
помощью цикла:
<p v-for="value in values">{{ value }}></p>
По крайней мере, это решение не дало желаемого результата. Я, вероятно, неправильно понял здесь некоторую логику Vue.
Ответ №1:
Вам нужно использовать свойство data.
data() {
return {
values: []
}
},
methods: {
getData: function() {
this.values = arr;
}
}
И зацикливание значений
Комментарии:
1. Спасибо, это работает, и я вижу из консоли, что
values
массив обновляется соответствующим образом. Однако, похоже, что Vue не может обнаружить эти изменения в массиве, и выбранные значения не отображаются во внешнем интерфейсе (просто отображается начальный пустой массив). Есть идеи по этому поводу?2. Вы уверены, что присвоили извлеченные данные значениям?
3. Да, я изменил логику следующим образом. « data() { return { values: [] } }, методы: { getData: function() { this.values = arr; console.log(this.values); // Я вижу полученные данные на консоли. } } «` Я думаю, что проблема в том, что мое приложение не перерисовывает HTML-документ при
values
обновлении массива.<p v-for="value in values">{{ value }}></p>
Это просто отображение исходного массива, а не обновленного.4. Отладка заняла некоторое время, но проблема была в области видимости.
this.values = arr; console.log(this.values);
Это работало нормально в области действия функции, ноthis
не относилось к массиву, о котором я думал. Необходимо добавитьconst self = this;
на глобальном уровне. Это было трудно заметить, но сейчас работает нормально.l