Я использую этот код:
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 завершил связывание с новыми данными