Функция вычисляемого значения в объекте Vue - PullRequest
0 голосов
/ 27 марта 2019

У меня есть объект Vue, который содержит свойство computed.В функции mounted есть событие, для которого я настроил слушателя.Функция для свойства computed вызывается, когда запускается событие, которое я слушаю, но оно вызывается до , когда обработчик события начинает свой процесс.Единственная другая ссылка на вычисляемое свойство в объекте - наблюдатель.Стек вызовов показывает только процессы vue.js до вызова вычисляемого свойства.Насколько я могу судить, никакие значения, от которых зависит вычисляемое свойство, не изменяются.

new Vue({
el: '#element',
data: {
    info: [],
},
computed: {
    compVal: function () {
        .
        .
        .
    },
    d
},
watch: {
    compVal: function (dataSet) {
        .
        .
        .
    }
},
mounted: function () {
    var vm = this;

    window.addEventListener("datachange", function (e) {
        vm.info = e.newInfo;
    });
}})

Может ли кто-нибудь помочь мне понять, почему он вызывается, чтобы я мог предотвратить его?Или, по крайней мере, помогите мне определить, что никакие зависимые значения не меняются, чтобы я мог вернуться с него раньше, чем завершать функцию?

Ответы [ 2 ]

0 голосов
/ 28 марта 2019

Я на самом деле понял это.

Одним из объектов, передаваемых событием, была ссылка на объект, содержащийся в коде, который инициировал событие, а не на копию. Когда страница впервые загрузилась, было отправлено начальное событие со значениями по умолчанию. Когда объект Vue сохранял эти значения, он получал ссылку. Когда источник события (другой объект Vue, имеющий домен над элементами формы) изменил свою копию объекта, он автоматически инициировал изменение ссылки основного объекта Vue на объект и вызывал оценку свойства.

Выполнение глубокого клона объекта перед передачей в событие решило его.

0 голосов
/ 27 марта 2019

Если ваша функция должна выполняться на основе события наблюдателя, то функция должна быть расположена в методах.

...