Vuejs. Компонент динамического списка

282
06 февраля 2018, 11:12

Есть компонент:

Шаблон:

<li :class="{active: active}" class="list-item">
    <span v-if="model.child" >+</span><span @click="activeSet">{{ model.name }}</span>
    <ul v-if="model.child && model.child.length">
        <item :model="item" :key="item.id" v-for="(item,index) in model.child"></item>
    </ul>
</li>

Код компонента:

Vue.component('item',{
props: ['model'],
template : '#item-template',
data: function () {
    return {
        active: false,
    }
},
methods: {
    activeSet: function(){
        var self = this;
        window.Event.$emit('deactive');
        this.active = true;
        axios.get('api.php',{
            params : {
                folder : self.model.path
            }
        }).then(function(response){
            if(response.data.folders && response.data.folders.length)
                self.model.child = response.data.folders;
        });
    }
},
mounted: function(){
    var self = this;
    window.Event.$on('deactive',function(){
        self.active = false;
    });
}
} );

App:

var app = new Vue({
el: '#app',
data: {
    treeData : []
},
mounted: function(){
    var self = this;
    axios.get('api.php',{
        params : {
            folder : '/'
        }
    }).then(function(response){
        self.treeData = response.data.folders;
    });
},
});

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

Answer 1

Документация

self.$set(self.model, 'child', response.data.folders);
READ ALSO
Проверка Инпута на пустоту JavaScript [дубликат]

Проверка Инпута на пустоту JavaScript [дубликат]

На данный вопрос уже ответили:

245
Как сделать пагинацию на странице?

Как сделать пагинацию на странице?

У меня есть массив 150 юзеров, я его перебираю и вывожу на странице сразу по 150 пользователейКак их можно выводить по 20 пользователей при нажатии...

379
сделать так, чтобы картинки при рандоме не повторялись

сделать так, чтобы картинки при рандоме не повторялись

Есть 10 иконокПри загрузке страницы выбираю рандомную из них и показываю

343