Vue.js学习系列(四十四)-- 自定义事件

父组件是使用 props 传递数据给子组件,但如果子组件要把数据传递回去,就需要使用自定义事件

我们可以使用 v-on 绑定自定义事件每个 Vue 实例都实现了事件接口(Events interface),即:

使用 $on(eventName) 监听事件

使用 $emit(eventName) 触发事件

另外,父组件可以在使用子组件的地方直接用 v-on 来监听子组件触发的事件。

以下我们通过记录按钮点击的次数这个实例来学习在vue.js中如何自定义事件。

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Document</title>

<script src="src/vue.min.js"></script>

</head>

<body>

<div id="app">

<div id="counter-event-example">

<p>{{total}}</p>

<btn v-on:increment="incrementTotal"></btn>

<btn v-on:increment="incrementTotal"></btn>

</div>

</div>

<script type="text/javascript">

Vue.component('btn',{

template:'<button  v-on:click="increment">{{counter}}</button>',

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

}

}

})

</script>

</body>

</html>

运行结果如下:


点击下面的2个按钮中任意按钮,该按钮上的数字会累加,同时最上面的数字也会累加。

 

如果你想在某个组件的根元素上监听一个原生事件。可以使用 .native 修饰 v-on 。例如:

<component v-on:click.native="doTheThing"></component>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值