Vue.js的事件机制

监听事件

vm.$on(event, callback)

在vm实例监听事件。vm.$emit, vm.$dispatchvm.$broadcast 均可抛事件。

vm.$on('test', function(msg){
    console.log(msg)
})
vm.$emit('test', 'hi')

监听单次事件

vm.$once(event, callback)
仅监听一次事件。

移除回调函数

vm.$off([event, callback])

  • 如果参数为空,则移除所有回调函数
  • 如果仅提供事件名,则移除对应该事件的全部回调函数
  • 如果提供事件名和函数名,则只移除该事件对应的回调函数。

向自己抛事件

vm.$emit(event, […args])
vm实例抛出事件。除事件名外的其他参数都会传递到回调函数。

向上级抛事件

vm.$dispatch(event, […args])

向上抛出事件。先触发实例本身,然后沿父级链向上传递。如果回调函数没有返回 true,传播过程触发到第一个回调函数就会停止。

var parent = new Vue()
var child1 = new Vue({ parent:parent })
var child2 = new Vue({ parent: child1 })

parent.$on('test', function(){
  console.log('parent notified')
})

child1.$on('test', function(){
  console.log('child1 notified')
  return true
})

child2.$on('test', function(){
  console.log('child2 notified')
})

child2.$dispatch('test')

向下级抛事件

vm.$broadcast(event, […args])

向下传递事件。注意,该方法不会在当前实例触发事件

var parent = new Vue()
var child1 = new Vue({ parent: parent })
var child2 = new Vue({ parent: parent })
var child3 = new Vue({ parent: child2 })

parent.$on('test', function(){
  console.log('parent notified')
})

child1.$on('test', function(){
  console.log('child1 notified')
  return true
})

child2.$on('test', function(){
  console.log('child2 notified')
})

child3.$on('test', function(){
  console.log('child3 notified')
})

parent.$broadcast('test')

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值