vanyahuk
@vanyahuk

Почему не работает плагин vue-masonry после ajax запроса?

После установки плагина vue-masonry все работало прекрасно до того момента, пока ненужно было обновлять список статей ajax запросом.
вот код компоненты vue.js

<template>
    <div class="grid-container">
        <div v-masonry transition-duration="0.3s" item-selector=".item">
            <div v-masonry-tile class="item col-lg-3 col-md-3 col-sm-12 col-xs-12" v-for="article in articles">
                test
            </div>
        </div>
    </div>
</template>
<script>

export default{

    data : function () {
        return {
            articles : {}
        }
    }, 
    
    mounted : function () {

        this.get_articles()

    },


    methods : {

        get_articles : function () {

            this.$http.post( window.location.origin + window.location.pathname ).then(response => {

                this.articles = response.body;

        },response => {});
        }

    }

}
</script>


когда вместо v-for="article in articles" пишу v-for="article in 10" все работает
вот ссылка на репозиторий
  • Вопрос задан
  • 337 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
А сам запрос-то происходит? Если вдруг да - успешен ли? Если снова да - что в response.body?

UPD. Вынесено из комментариев:

с респонсом все впорядке
<...>
нехочет переиницыализировать плагин

Понятно. Тогда надо "переиницыализировать" вручную. После получения данных и завершения обновления DOM:

watch: {
  массивДанных() {
    this.$nextTick(this.$redrawVueMasonry);
  },
},
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
kulakoff
@kulakoff Куратор тега Vue.js
Vue.js developing
Судя по доке вот эту штуку надо вызвать при изменении элементов: this.$redrawVueMasonry()
Ответ написан
Ваш ответ на вопрос

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

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