zoukankan      html  css  js  c++  java
  • vue自定义组件添加原生事件监听

      注:全局或局部注册的组件称为子组件,其中声明的组件名称(如下demo中的child)是一个自定义组件

    Demo1-直接给父组件添加事件监听

     1  <!DOCTYPE html>
     2 <html>
     3      <head>
     4            <meta charset="UTF-8">
     5            <title></title>
     6            <script src="../../vue.js"></script>
     7      </head>
     8      <body>
     9            <div id="root" @click="handleClick">
    10                 Child
    11            </div>
    12            <script>
    13                 Vue.component('child', {
    14                      template: '<div>Child</div>'
    15                 })
    16                 
    17                 var vm = new Vue({
    18                      el: '#root',
    19                      methods: {
    20                            handleClick: function() {
    21                                 alert(1);
    22                            }
    23                      }
    24                 })
    25            </script>
    26      </body>
    27 </html>

    Demo2-使用$emit()发布事件广播,然后父组件可以监听子组件向外触发的事件,并执相应方法即可

     1 <!DOCTYPE html>
     2 <html>
     3      <head>
     4            <meta charset="UTF-8">
     5            <title></title>
     6            <script src="../../vue.js"></script>
     7      </head>
     8      <body>
     9            <div id="root">
    10                 <child @click="handleClick"></child>
    11            </div>
    12            <script>
    13                 Vue.component('child', {
    14                      template: '<div @click="handleChild">Child</div>',
    15                      methods: {
    16                            handleChild: function() {
    17                                 this.$emit('click');
    18                            }
    19                      }
    20                 })
    21                 
    22                 var vm = new Vue({
    23                      el: '#root',
    24                      methods: {
    25                            handleClick: function() {
    26                                 alert(1);
    27                            }
    28                      }
    29                 })
    30            </script>
    31      </body>
    32 </html>

    注:但这种方式是给组件绑定自定义事件,而不是绑定原生事件且要触发2个事件,比较麻烦,此时需要使用demo3的方法

    Demo3-直接使用事件修饰符native即可

     1 <!DOCTYPE html>
     2 <html>
     3      <head>
     4            <meta charset="UTF-8">
     5            <title></title>
     6            <script src="../../vue.js"></script>
     7      </head>
     8      <body>
     9            <div id="root">
    10                 <child @click.native="handleClick"></child>
    11            </div>
    12            <script>
    13                 Vue.component('child', {
    14                      template: '<div>Child</div>'
    15                 })
    16                 
    17                 var vm = new Vue({
    18                      el: '#root',
    19                      methods: {
    20                            handleClick: function() {
    21                                 alert(1);
    22                            }
    23                      }
    24                 })
    25            </script>
    26      </body>
    27 </html>

    摘自:https://www.cnblogs.com/tu-0718/p/11196009.html

  • 相关阅读:
    支持向量机 (三): 优化方法与支持向量回归
    支持向量机 (二): 软间隔 svm 与 核函数
    支持向量机 (一): 线性可分类 svm
    拉格朗日乘子法
    特征选择: 卡方检验、F 检验和互信息
    Python 多进程、多线程效率比较
    Umi+Dva搭建Cesium 3D开发环境
    React 项目生产版本迭代页面不刷新问题
    React-Native学习手册----搭建基于ios平台的开发环境
    Cesium 绘制点、线、面和测距
  • 原文地址:https://www.cnblogs.com/planetwithpig/p/11654776.html
Copyright © 2011-2022 走看看