我有一个包含computed
属性的Vue对象。在mounted
函数中,有一个我为其设置侦听器的事件。当我正在侦听的事件被触发时,将调用计算属性的函数,但在事件处理程序开始其处理之前,它被称为 before 。对象中对计算属性的唯一其他引用是观察者。调用堆栈仅在调用计算出的属性之前显示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;
});
}})
有人可以帮我弄清楚为什么要调用它,以便我可以阻止它吗?还是至少可以帮助我确定没有依赖值在变化,所以我可以从中早返回而不是完成功能?
答案 0 :(得分:0)
如果您的函数应基于观察者事件运行,则该函数应位于方法中。
答案 1 :(得分:0)
我真的想通了。
事件传递的对象之一是对触发事件的代码所保存的对象的引用,而不是副本。首次加载页面时,发送了具有默认值的初始事件。当Vue对象存储这些值时,它正在获取引用。当事件的源(在表单元素上具有域的另一个Vue对象)更改其对象副本时,它会自动触发主Vue对象对该对象的引用中的更改并导致该属性进行评估。>
在将对象传递到事件之前对其进行深层克隆即可解决它。