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

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

    });

}})

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


慕容森
浏览 291回答 2
2回答

侃侃尔雅

我真的想通了。事件传递的对象之一是对触发事件的代码所保存的对象的引用,而不是副本。首次加载页面时,发送了具有默认值的初始事件。当Vue对象存储这些值时,它正在获取引用。当事件的源(在表单元素上具有域的另一个Vue对象)更改其对象副本时,它会自动触发主Vue对象对该对象的引用中的更改,并导致对属性进行求值。在将对象传递到事件之前对其进行深层克隆即可解决该问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript