Javascript 正在触发的Vue对象中的计算值函数

Javascript 正在触发的Vue对象中的计算值函数,javascript,vue.js,events,computed-properties,Javascript,Vue.js,Events,Computed Properties,我有一个Vue对象,它包含一个computed属性。在mounted函数中,我为一个事件设置了侦听器。computed属性的函数在我正在侦听的事件被触发时被调用,但它是在事件处理程序开始其进程之前被调用的。对象中对computed属性的唯一其他引用是watcher。调用堆栈仅显示调用计算属性之前的vue.js进程。据我所知,没有更改计算属性所依赖的值 new Vue({ el: '#element', data: { info: [], }, computed: { compVa

我有一个Vue对象,它包含一个
computed
属性。在
mounted
函数中,我为一个事件设置了侦听器。computed属性的函数在我正在侦听的事件被触发时被调用,但它是在事件处理程序开始其进程之前被调用的。对象中对computed属性的唯一其他引用是watcher。调用堆栈仅显示调用计算属性之前的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;
    });
}})

有人能帮我弄清楚它为什么被调用,这样我就可以阻止它了吗?或者至少帮助我确定没有相关值在更改,这样我就可以提前返回,而不是完成函数了?

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

我实际上已经解决了这个问题

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


在将对象传递到事件之前对其进行深度克隆可以解决此问题。

请发布足够的代码来重现此问题。已添加。就像我说的,
compVal
是在事件被触发时被调用的(它是由页面上其他地方的表单元素触发的),但在调用事件处理程序之前被调用的。仅此而已。它不应该基于观察者事件运行。观察者正在分配它所依赖的值,但是函数在这些值被分配之前就已经运行了,所以它最终被调用了两次。