6

我正在学习Vuejs event handling.
我认为开发人员可以使用this.$on('event', handler)injs文件来处理'event'.

有一个例子

<div id="mainapp" v-on:event="processEventFromView">
    <button type="button" v-on:click="emitEvent">
       Emit Event
    </button>
</div>

.js 文件

var app = new Vue({
  el:"#mainapp",
  data:{
    show:false
  },
  created:function(){
     this.$on('event', this.processEvent);
  },
  methods:{
      emitEvent:function(){
          this.$emit('event', {data:'mydata'});
      },
      processEvent(data){
         console.log('js', data);  //this is fired when clicking the button.
      },
      processEventFromView(data){
         console.log('view', data);  //this is not fired whenever.
      }      

   }
})

但是在示例中,只有在单击按钮时才会触发processEvent附加的处理程序。vs 和this.$on()有什么不一样? 为什么不随时调用? 我可以将 附加到带有引用的按钮事件,而不是? 请帮助我我错了什么。v-onthis.$on
v-on:event="processEventFromView"
event handlerclickrefv-on:click="emitEvent"

4

1 回答 1

1

我猜它与 Vue 的 Linus Berg 相关并在此处回答https://stackoverflow.com/a/36159698/1225266 虽然它与 Vue 的早期版本有关(该帖子来自 2016 年),但我想它仍然适用。

简而言之,您的问题的答案

为什么每次都不调用 v-on:event="processEventFromView" ?

是(我引用)

不能在模板中使用 v-on:custom-event-name (仅用于组件)。

于 2018-10-26T09:17:59.377 回答