Метод Vue для перечисления каждого объекта в массиве объектов приводит к ошибкам

#javascript #arrays #json #laravel #vue.js

Вопрос:

Это раскрывающийся компонент, используемый для предоставления списка всех сеток на всех страницах. На этих страницах есть несколько страниц и сеток.

     <v-dropdown
        :items="pageGrids"
        :item-text="gridNamesAndPages"
        return-object
    />
 

Имена и страницы сетки находятся в разделе методы:

     gridNamesAndPages: item => item.name   ' • (Page: '   item.page_name.name   ')',
 

Это метод, используемый для назначения пустых сводных сеток массива всем сеткам для этого проекта:

     getAllPageGrids() {
        apiClientGet(
            routes["pages.getAllPageGrids"],
            null,
            response => {
                this.pageGrids.push(response.data);
            }
        );
    },
 

Функция в контроллере:

     public function getAllPageGrids()
    {
        return Auth::user()->client->grids()->get();
    }
 

Сводные таблицы представлены в этом формате. Там может быть несколько сеток, поэтому, хотя это показывает только 3, их может быть 100:

     [
        {
            "id": 3,
            "name": "AS",
            "grid_cols": [
                {
                    "id": 16,
                    "grid_id": 3,
                    "order": 1,
                    "header": "Col 1",
                }
            ],
            "page_name": {
                "name": "Page 1"
            }
        },
        {
            "id": 4,
            "name": "SF",
            "grid_cols": [
                {
                    "id": 21,
                    "grid_id": 4,
                    "header": "Name",
                },
                {
                    "id": 22,
                    "grid_id": 4,
                    "header": "Reference",
                }
            ],
            "page_name": {
                "name": "Page 1"
            }
        },
        {
            "id": 5,
            "name": "WE",
            "grid_cols": [
                {
                    "id": 24,
                    "grid_id": 5,
                    "header": "Name",
                }
            ],
            "page_name": {
                "name": "Page 2"
            }
        }
    ]
 

Однако я продолжаю получать эту ошибку:

введите описание изображения здесь
введите описание изображения здесь

Я не вижу ничего плохого в том, как структурирован код. Кто-нибудь знает, действительно ли я написал это неправильно?

(По запросу я также включил пользовательский компонент v-выпадающего списка)

 <template>
    <v-select
        :class="`text-field-${color || 'white'}`"
        outlined dense
        v-on="$listeners" v-bind="$attrs"
    >
        <slot>
            <!--  -->
        </slot>
    </v-select>
</template>

<script>

export default {
    props: {
        color: {
            type: String|null,
            default: null
        }
    },
};
</script>
 

Комментарии:

1. Я бы рекомендовал пометить это как vue -то так, чтобы использовать версию, специфичную для вашей

2. что это за v-выпадающий компонент? можете ли вы поделиться своим кодом / документами?

3. Это пользовательский компонент, основанный на v-select, я добавил код внизу

4. gridNamesAndPages ожидает, что будет передан один аргумент ( item ), но вы не делаете этого в своем шаблоне.

5. Это имеет смысл, хотя, поскольку :items ожидает массив из нескольких объектов, то разве :item-text не ожидает обработки каждого объекта (элемента) в этом массиве, а не только одного?