vue的自定义事件非常有趣,大意为子组件使用了一个事件,比如click然后产生了一个效果,这样的效果便可以为自定义事件了。然后将这样的效果命名放入父组件中,当做一个事件来触发,每当这样的效果发生一次时,这样父组件的事件也被触发了,即可以产生另一种效果,这样可以加强这两个效果的紧密联系,并且这样有趣又好用的方式也可以用在自己想要的地方。自定义事件的强大算是初步体会到了。


例子:

<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>


Vue.component('button-counter', {
  template: '<button v-on:click="increment">{{ counter }}</button>',
  //click的 触发会向上触发自定义事件incremnet,从而在函数incrementTotal中改变total的大小
  data: function () {
    return {
      counter: 0
    }
  },
  methods: {
    increment: function () {
      this.counter += 1
      this.$emit('increment')
    }
  },
})


new Vue({
  el: '#counter-event-example',
  data: {
    total: 0
  },
  methods: {
    incrementTotal: function () {
      this.total += 1
    }
  }
})

转载

Logo

前往低代码交流专区

更多推荐