Vue Watcher выполняется, прежде чем новые данные связаны?

ibiza спросил: 26 ноября 2017 в 05:32 в: javascript

Я использую этот код:

var vueApp = new Vue({
    el: '#app',
    data: {
        modalKanji: {}
    },
    methods: {
        showModalKanji(character) {
            sendAjax('GET', '/api/Dictionary/GetKanji?character=' + character, function (res) { vueApp.modalKanji = JSON.parse(res); });
        }
    },
    watch: {
        'modalKanji': function (newData) {
            setTimeout(function () {
                uglipop({
                    class: 'modalKanji', //styling class for Modal
                    source: 'div',
                    content: 'divModalKanji'
                });
            }, 1000);
        }
    }
});

и у меня есть элемент, который при щелчке на нем отображает всплывающее окно с данными кандзи внутри:

<span @click="showModalKanji(kebChar)" style="cursor:pointer;>
    {{kebChar}}
</span><div id="divModalKanji" style='display:none;'>
    <div v-if="typeof(modalKanji.Result) !== 'undefined'">
        {{ modalKanji.Result.literal }}
    </div>
</div>

Это работает, но только если используется с задержкой setTimeout, чтобы"дать время Vue обновить свою модель" ... если я удалю setTimeout, чтобы код вызывался мгновенно в функции наблюдения, всплывающее окно данные всегда"на одну итерацию позади", они показывают информацию о предыдущем кандзи, на который я нажал ...

Есть ли способ вызвать функцию наблюдателя ПОСЛЕ того, как Vue завершил связывание с новыми данными


0 ответов