Vue компонент в Laravel - привязка данных не реагирует - PullRequest
0 голосов
/ 10 декабря 2018

Мой первый компонент Vue.js в laravel сводит меня с ума.Мне нужно сделать связь между компонентом и массивом в JavaScript.Поскольку в массив добавлены элементы, мне нужно сделать его отзывчивым, но все статьи, связанные с этой темой, мне совсем не помогают.Кажется, я просто не попал в свою целевую переменную.

Мой app.js (он содержит некоторые тестовые данные для проверки того, что мой компонент работает в принципе и работает):

Vue.component('veg-bed-table', require('./components/VegBedTable.vue'));

var vegbed = new Vue({
    el: '#vegbed',
    data: function () {
        return {
            bedcomposition: [{id:2222, picref:234, plant:{name:1234}},{id:2223, picref:234, plant:{name:1234}}]
        }
    }
});

My VegBedTable.vue:

<template>
    <table class="table">
        <thead>
            <tr>
                <th scope="col">#</th>
                <th scope="col">Image</th>
                <th scope="col">Name</th>
            </tr>
        </thead>
        <tbody>
            <tr v-for="plant in plants">
                <th scope="row">{{ plant.id }}</th>
                <td><img height="18px" :src="plant.picref"></td>
                <td>{{ plant.plant.name }}</td>
            </tr>               
        </tbody>    
    </table>
</template>

<script>
    export default {
        props:[
                'plants'
            ],
            
        mounted() {
            console.log('Component mounted.')
        }
    }
</script>

Вызов компонента в блейде выглядит следующим образом:

            <div id="vegbed">
                <veg-bed-table v-bind:plants="bedcomposition"></veg-bed-table>
            </div>

После загрузки страницы все выглядит нормально, компонент показывает две строки в исходных данных.Но когда я пытаюсь присвоить реальные данные, вызывая функцию js, я получаю предупреждение:

[Vue warn]: невозможно установить реактивное свойство для неопределенного, нулевого или примитивного значения: undefined

с последующей ошибкой: TypeError: правая часть 'in' должна быть объектом, получившим неопределенное значение [Weitere Informationen]

в строке Vue.set ....

function addPlant(pref, plantsgroup, plant) {
    data.push({id:uuidv4(), x:50,y:50 ,picref:pref+'.svg',picsize:40, plant:plant, plantsgroup:plantsgroup});

    Vue.set(vegbed.bedcomposition, data);

    
    updateBedContent();
}

Когда я пытаюсь

Vue.set(vegbed, "bedcomposition", data);

Вместо этого я совсем не реагирую.

Так что у меня сложилось впечатление, что у меня проблема с контекстом / пространством имен, но после 3 часов чтения и проб и ошибок ядействительно разочарован.Любая помощь будет оценена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...