Vue之emit

最近在阅读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 方法
(我是这样理解 如果有不对 还请大家指正 感谢❤️

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容