Задать вопрос
Flex99
@Flex99
Frontend Developer

Как получить объект массивов прежде, чем сработает computed()?

Столкнулся с проблемой ошибки рендеринга, я получаю с сервера json объект с кучей массивов, но на этапе когда нужно выводить в шаблон возникает ошибка.

Вот мой код:
input(type='text'  v-model="searchString")
.reports
	.reports__item(v-for='report in reportsFilters')


let reportsApp = new Vue({
		el: reportsEl,
		data: {
			searchString: '',
			reports: {},
		},
		methods: {
			getReportsArr() {
				let axiosUrl = this.$el.getAttribute('data-xhr');

				axios.get(axiosUrl).then(response => {
					let data = response.data;

					for (let i = 0; i < data.length; i++) {
						let reportsArr = data[i].reportsList;

						this.reports = reportsArr;
					}
				}).catch(e => {
					this.errors.push(e);
				})
			}
		},
		beforeMount() {
			this.getReportsArr();
		},
		computed: {
			reportsFilters() {
				let self=this;

				return this.reports.filter((report) => {
              return report.reportName.toLowerCase().indexOf(self.searchString.toLowerCase())>=0;
              });
			}
		}
	})
  • Вопрос задан
  • 137 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
@SeaBreeze876
Front-end разработчик
При инициализации в data.reports пустой объект, у него нет метода filter, вызываемого в computed.reportsFilter. Необходимо сделать пустым массивом
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы