覆盖Mixin的观察者

Tho*_*rro 1 vue.js vuejs2

如您在本示例中看到的,我有一个带有value数据的全局mixin 和对该数据的观察者:

Vue.mixin({
    data() {
    return {
        value: 'test',
      mixinWatcher: false,
    };
  },
  watch: {
    value: {
        handler() {
        console.log('mixin');
        this.mixinWatcher = true;
      },
        immediate: true,
    },
  },
});
Run Code Online (Sandbox Code Playgroud)

我也有两个组成部分:

  • NoMergeComponent没有任何观察者。我希望该组件使用默认的观察程序。
  • MergeComponent 那应该覆盖默认的观察者。

是否有可能覆盖mixin的监视程序,还是我应该找到另一种方法,例如手动删除监视程序?

我还认为我可以通过将方法绑定到观察程序来解决此问题,并重写此方法而不是整个监视程序。

Tho*_*rro 5

解决方法起作用。

我基本上在观察器中调用了另一个方法,当我想重写此方法时,我可以简单地让Vue.js进行合并:

这是我的mixin:

Vue.mixin({
    data() {
    return {
        value: 'test',
      mixinWatcher: false,
    };
  },
  watch: {
    value: {
        handler() {
        this.valueWatcher();
      },
        immediate: true,
    },
  },
  methods: {
    valueWatcher() {
        console.log('mixin');
      this.mixinWatcher = true;
    }
  },
});
Run Code Online (Sandbox Code Playgroud)

以及需要覆盖观察者方法的组件:

const MergeComponent = {
    template: '#test-component-template',
  methods: {
    valueWatcher() {
        console.log('component');
    },
  },
};
Run Code Online (Sandbox Code Playgroud)