Почему не работает реактивность v-for?

Не работает реактивность в v-for, нагуглил что нужно добавлять ID, не помогло. Переменная обновляется при клике на внешний элемент, в консоли выводятся новые данные после клика, а компонент так и не обновляется
Компонент html
<devices 
            v-for="device in roominfo"
            :key="device.id"
            :device="device"
        ></devices>

Компонент js
Vue.component('devices', {
    props: ['device','key'],
    template: '<div class="roominfo"">{{ device.name }} - {{ key }}</div>'
});

APP
var app = new Vue({
    el: '#app',
    data: {
        devices: [],
        roominfo: []
    },
    created(){
        fetch('/smart-home.php')
            .then((response) => {
                if(response.ok) {
                    return response.json();
                }
            
                throw new Error('Network response was not ok');
            })
            .then((json) => {
                this.devices = json;
                this.getRoomDevices("133");
            })
            .catch((error) => {
                console.log(error);
            });
    },
    methods:{
        getrooms: function () {
            var rooms = new Set();
            for (let device of this.devices) {
                rooms.add(device.room);
            }
    
            return Array.from(rooms).sort();
        },
        getRoomDevices: function (roomName) {
            
            let newdata = [];
            
            for (let device of this.devices) {
                if(device['room'] == roomName){
                    newdata.push(device);
                }
            }
            this.roominfo = newdata;
            console.log(this.roominfo);
        }
    }
});

Данные в переменной
5df250a9705f6518145373.png
  • Вопрос задан
  • 209 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Alex1237 Автор вопроса
Госпаде я даун.. roominfo класс и roominfo переменная во vue...
Ответ написан
Комментировать
@densis2003
Товарищ код

then((json) => {
this.devices = json;
this.getRoomDevices("133");
})

Не катит, this не в этом контексте, попробуй обратиться глобально app. devices = json; и так далие и все получится
Ответ написан
Ваш ответ на вопрос

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

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