组件内 Mixin 的调用方法(Vuejs)

Yas*_*rKH 3 vue.js vuejs2

我无法从组件调用 mixin 方法,出现此错误this.hello is not a function

我可以hello()从 Vue 实例调用,但不能在组件内调用它。

怎么回事?!

<div id='vue-app'>
  <cmp></cmp>
</div>
Run Code Online (Sandbox Code Playgroud)
const mixin = {
  methods: {
    hello() {
      return 'Hello World!';
    }
  },
  created() {
    console.log('Mixin Created!');
  },
};

const cmp = {
  created() {
    console.log('From Cmp:', this.hello());
  },
};

new Vue({
  components: {
    cmp
  },
  el: '#vue-app',
  mixins: [mixin],
  created() {
    console.log('From VM:', this.hello());
  },
});
Run Code Online (Sandbox Code Playgroud)

https://jsfiddle.net/ar464soq/

小智 5

正确,mixin 方法/数据仅在其添加到的实例中可用。但是,如果您真的想要this.$root.hello()根实例中的 mixin,则可以从根实例的任何子组件调用