Vue对象中的计算值函数被触发

时间:2019-03-27 20:14:56

标签: javascript vue.js events computed-properties

我有一个包含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;
    });
}})

有人可以帮我弄清楚为什么要调用它,以便我可以阻止它吗?还是至少可以帮助我确定没有依赖值在变化,所以我可以从中早返回而不是完成功能?

2 个答案:

答案 0 :(得分:0)

如果您的函数应基于观察者事件运行,则该函数应位于方法中。

答案 1 :(得分:0)

我真的想通了。

事件传递的对象之一是对触发事件的代码所保存的对象的引用,而不是副本。首次加载页面时,发送了具有默认值的初始事件。当Vue对象存储这些值时,它正在获取引用。当事件的源(在表单元素上具有域的另一个Vue对象)更改其对象副本时,它会自动触发主Vue对象对该对象的引用中的更改并导致该属性进行评估。

在将对象传递到事件之前对其进行深层克隆即可解决它。