Как добавить новое свойство к данным vue (объекта)?

Как добавить новое свойство к данным vue (объекта)?

12.01.2020 01:07:47 Просмотров 58 Источник

Я получаю следующую ошибку при использовании пагинации в vue.JS

вю.js: 2192 Uncaught (in promise) TypeError: this.категории.толчок-это не функция в VueComponent.getAllChildren (vue.js: 2192) в vue.js: 2207

скрипт:

export default {
    name: "DisplayCategories",
    data() {
        return {
            categories: {},
        }
    },
    mounted() {
        this.categoriesList();
    },
    methods: {
        getAllChildren(currentValue, level) {

            for (let i = 0; i < currentValue.length; i++) {
                let current = currentValue[i];
                this.categories.push({
                    id: current.id,
                    name: Array(level + 1).join("....") + " " + current.name
                })
                if (current.children_recursive && current.children_recursive.length > 0) {
                    this.getAllChildren(current.children_recursive, level + 1)
                }
            }
        },
        categoriesList() {
            let uri = '/api/categories';
            this.axios.get(uri).then(response => {
                this.getAllChildren(response.data.data, 0)
            });
        },
        getResults(page = 1) {
            axios.get('/api/categories?page=' + page)
                .then(response => {
                    this.categories = response.data;
                });
        }
    }
}

контроллер:

public function index()
{
    $categories = Category::with('childrenRecursive')
        ->where('parent_id', null)
        ->paginate(5);

    return response()->json($categories, 200);
}
У вопроса есть решение - Посмотреть?

Ответы - Как добавить новое свойство к данным vue (объекта)? / How to add a new property to vue (object) data?

niklaz

12.01.2020 01:15:24

Вы определили categoriesкак объект, и .push()можно использовать только для массивов. Определение categoriesкак массива:

    export default {
            name: "DisplayCategories",
            data(){
                return{
                    categories:[],

                }
            }, 
...
https://stackoverflow.com/questions/59702768/how-to-add-a-new-property-to-vue-object-data/59702823#comment105558968_59702823
Превращая его в объект, пагинация не работает
https://stackoverflow.com/questions/59702768/how-to-add-a-new-property-to-vue-object-data/59702823#comment105558986_59702823
Можно ли преобразовать массив в объект?
Помочь в развитии проекта:
Закрыть X