我有一个包含computed属性的Vue对象。在该mounted函数中,有一个我设置了侦听器的事件。当我正在侦听的事件被触发时,将调用计算属性的函数,但该函数将在事件处理程序开始其处理之前被调用。对象中对计算属性的唯一其他引用是观察者。调用堆栈仅在调用计算出的属性之前显示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 回答
侃侃尔雅
TA贡献1801条经验 获得超16个赞
我真的想通了。
事件传递的对象之一是对触发事件的代码所保存的对象的引用,而不是副本。首次加载页面时,发送了具有默认值的初始事件。当Vue对象存储这些值时,它正在获取引用。当事件的源(在表单元素上具有域的另一个Vue对象)更改其对象副本时,它会自动触发主Vue对象对该对象的引用中的更改,并导致对属性进行求值。
在将对象传递到事件之前对其进行深层克隆即可解决该问题。
添加回答
举报
0/150
提交
取消