vue .native 方法未定义_(深入Vue组件)4.给组件绑定原生事件

af2143e54bccfee4ac331322864243ca.png

关键词

  • 自定义事件(子组件触发自定义事件$emit)、
  • 原生事件(子组件的原生事件、父组件的原生事件 @click.native

一、自定义事件

1、自定义事件

父组件中给组件所绑定事件 @click="事件方法名" ,事件绑定为 自定义事件

试一下吧:事实上,自定义事件在 Vue 实例中执行事件没有弹出窗的视图效果出现

2、如何触发自定义事件

子组件若要触发父组件绑定的事件,需要子组件对 template 的dom元素绑定一个 原生事件。当在子组件点击时,methods上调用this.$emit('自定义事件名') 去触发自定义事件,父组件中已监听该自定义事件

<body>
     <div id="root">
	 <child @click="handleClick"></child>
     </div>
     <script>     
       Vue.component('child',{
       	       // 原生事件的绑定
          template: '<div @click="handleChildClick">miya</div>',
          methods: {
              handleChildClick: function() {
                  this.$emit('click')  //触发自定义事件      
             }
          }
       })

        var vm = new Vue({
	    el: "#root",
	    methods: {
	          handleClick: function() {
                    alert("click")  //注意括号里要双引号
	           }
	    }
	})
     </script>
</body>

试一下吧,看看弹窗出来打印的是什么

二、原生事件

原生事件的监听分两种情况:

1、子组件的原生事件

解决:在子组件里对 template 的dom元素绑定原生事件,methods上执行原生事件,然后触发父组件上的自定义事件

Vue.component('child',{
    template: '<div @click="handleChildClick">miya</div>',
    methods: {
       handleChildClick: function() {
          alert("child click")  // 触发原生事件       
       }
    }
 })

试一下吧,弹出弹窗。页面效果只对子组件的原生事件有效

2、父组件的原生事件

(1)需求:在页面模板上直接监听子组件的原生事件

(2)解决:在组件上做事件监听 @click.native="xxx" 监听的并不是自定义事件,是原生的点击事件

<body>
    <div id="root">
	<child @click.native="handleClick"></child>
    </div>	
    <script>     
       Vue.component('child',{
           template: '<div>miya</div>', 
       })
       var vm = new Vue({
	   el: "#root",
	   methods: {
	      handleClick: function() {
                 alert("click")  //注意括号里要双引号
	      }
           }
       })
    </script>
</body>

试一下吧,仅仅只是加了native 这个方法,竟然就可以通过父组件打印出来

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值