Vue之emit

2017-10-07  本文已影响0人  西元前__YP

最近在阅读Vue官方文档,准备上手Vue,在读到组件这一节的时候,对绑定自定义事件的代码有一些疑惑,直接上代码

<div id="counter-event-example">
  <p>{{ total }}</p>
  <button-counter v-on:increment="incrementTotal"></button-counter>
  <button-counter v-on:increment="incrementTotal"></button-counter>
</div>

这里注意到 v-on:increment,因为之前读文档的时候只见过 v-on:click/submit 等,所以对冒号后面的 increment 感到陌生不知道它的作用。
在这里我推荐所有和我一样的新手,如果反复地阅读之后还是存在困惑,那就直接把代码撸到ide上自己实践,修修改改一番或许就会产生许多感触。

Vue.component('button-counter', {
  template: '<button v-on:click="incrementCounter">{{ counter }}</button>',
  data: function () {
    return {
      counter: 0
    }
  },
  methods: {
    incrementCounter: function () {
      this.counter += 1
      this.$emit('increment')
    }
  },
})
new Vue({
  el: '#counter-event-example',
  data: {
    total: 0
  },
  methods: {
    incrementTotal: function () {
      this.total += 1
    }
  }
})

通过自己的实践,发现这段代码的意思就是,首先在子组件中点击触发 incrementCounter 方法,然后在 incrementCounter 方法中,通过 this.$emit("increment") 来触发父组件中的 increment 同时父组件中 increment = incrementTotal 将‘increment’ 和 incrementTotal 方法绑定,所以即触发 incrementTotal 方法
(我是这样理解 如果有不对 还请大家指正 感谢❤️

上一篇 下一篇

猜你喜欢

热点阅读