vue.js - метод не может перебрать свойство массива - PullRequest
0 голосов
/ 12 ноября 2018

Мое приложение считывает массив данных json из API через axios. Я храню массив в свойстве приложения. Все в порядке, я могу проверить и увидеть данные массива.

Когда метод должен перебирать массив, он выдает сообщение об ошибке:

[Vue warn]: Error in render: "TypeError: Cannot read property 'length' of null"

Это код в моем приложении:

"use strict";

const app = new Vue({
    el: '#app',
    data: {
        diskstatus: null,
    },
    methods: {
        hasServer: function (serverName) {
            for (let i = 0; i < this.diskstatus.length; i++) {
                if (this.diskstatus[i].ServerName == serverName) {
                    return 'Y';
                }
            }
            return 'N';
        }
    },
    mounted() {
        axios
            .get('api/diskstatus')
            .then(response => {
                this.diskstatus = response.data.rows;
            })
            .catch(err => {
                console.log(err)
            });
    }
});

Есть идеи, почему код в методе не видит свойство как массив?

Я могу console.log массив, и он выглядит идеально. Заранее благодарю за отзыв!

1 Ответ

0 голосов
/ 12 ноября 2018

Очевидно, что v-for не может работать на null, потому что null не повторяемый .

Если вы пытаетесь использовать v-for для свойства, которое изначальноnull и только позже, асинхронно, становится Array, у вас есть два варианта:

  1. Инициализировать diskstatus: [] вместо null
  2. На элементе, где вы 'пытаясь v-for, добавить охрану: v-if="diskstatus".
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...