vue键盘事件点击事件加native操作


Posted in Javascript onJuly 27, 2020

如下所示:

<el-card class="box-card animated flipInY">
   <el-form :model="ruleForm2" :label-position="labelPosition" status-icon :rules="rules2" ref="ruleForm2" label-width="50px" class="demo-ruleForm">
    <h3 class="login_title">系统登录</h3>
    <el-form-item label="账号" prop="account">
     <el-input type="text" v-model="ruleForm2.account" @keyup.native.enter="handleSubmit2" auto-complete="off" placeholder="账号"></el-input>
    </el-form-item>
    <el-form-item label="密码" prop="checkPass">
     <el-input type="password" v-model="ruleForm2.checkPass" @keyup.native.enter="handleSubmit2" auto-complete="off" placeholder="密码"></el-input>
    </el-form-item>
    <el-checkbox label="记住密码" v-model="checked" class="remember">记住密码</el-checkbox>
    <el-form-item >
     <el-button type="primary" class="login_btn" @click.native.prevent="handleSubmit2" :loading="logining">登录</el-button>
    </el-form-item>
   </el-form>
  </el-card>

如上代码,后台管理系统的登录。在账号和密码中加入了键盘enter事件,监听时需要加.native才能正确使用;下面按钮的点击事件同样要加.native才能正常使用。

参考官方文档:

你可能有很多次想要在一个组件的根元素上直接监听一个原生事件。这时,你可以使用 v-on 的 .native 修饰符:

<base-input v-on:focus.native="onFocus"></base-input>

在有的时候这是很有用的,不过在你尝试监听一个类似 <input> 的非常特定的元素时,这并不是个好主意。比如上述 <base-input> 组件可能做了如下重构,所以根元素实际上是一个 <label> 元素:

<label>
 {{ label }}
 <input
  v-bind="$attrs"
  v-bind:value="value"
  v-on:input="$emit('input', $event.target.value)"
 >
</label>

这时,父级的 .native 监听器将静默失败。它不会产生任何报错,但是 onFocus 处理函数不会如你预期地被调用。

为了解决这个问题,Vue 提供了一个 $listeners 属性,它是一个对象,里面包含了作用在这个组件上的所有监听器。例如:

{
 focus: function (event) { /* ... */ }
 input: function (value) { /* ... */ },
}

有了这个 $listeners 属性,你就可以配合 v-on="$listeners" 将所有的事件监听器指向这个组件的某个特定的子元素。对于类似 <input> 的你希望它也可以配合 v-model 工作的组件来说,为这些监听器创建一个类似下述 inputListeners 的计算属性通常是非常有用的:

Vue.component('base-input', {
 inheritAttrs: false,
 props: ['label', 'value'],
 computed: {
  inputListeners: function () {
   var vm = this
   // `Object.assign` 将所有的对象合并为一个新对象
   return Object.assign({},
    // 我们从父级添加所有的监听器
    this.$listeners,
    // 然后我们添加自定义监听器,
    // 或覆写一些监听器的行为
    {
     // 这里确保组件配合 `v-model` 的工作
     input: function (event) {
      vm.$emit('input', event.target.value)
     }
    }
   )
  }
 },
 template: `
  <label>
   {{ label }}
   <input
    v-bind="$attrs"
    v-bind:value="value"
    v-on="inputListeners"
   >
  </label>
 `
})

现在 <base-input> 组件是一个完全透明的包裹器了,也就是说它可以完全像一个普通的 <input> 元素一样使用了:所有跟它相同的特性和监听器的都可以工作。

这里直接将官方文档copy过来了,也就是说当我们要监听组件的键盘事件或者点击事件的时候是不需要加.native的,而监听组件的就需要加.native才能使用了;但当你需要监听的内容是组件的子元素的时候.native也是不会生效的,此时官方又给了处理的办法就是使用v-on="$listeners"。

补充知识:Vue 关于@keyup.enter.native

看代码的时候遇到了

<el-input @keyup.enter.native="nextInput">

其实这个可以写成

<<el-input v-on:keyup.enter.native="nextInput">

用了封装组件的话,比如element,这个时候使用按键修饰符需要加上.native

这个大概意思就是监听键盘回车事件,并运行相应的nextInput函数

以上这篇vue键盘事件点击事件加native操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
表单提交验证类
Jul 14 Javascript
深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
Aug 04 Javascript
jQuery实现菜单式图片滑动切换
Mar 14 Javascript
基于jQuey实现鼠标滑过变色(整行变色)
Dec 07 Javascript
浅谈JavaScript中的分支结构
Jul 01 Javascript
jQuery Ajax Post 回调函数不执行问题的解决方法
Aug 15 Javascript
Angular2仿照微信UI实现9张图片上传和预览的示例代码
Oct 19 Javascript
2种简单的js倒计时方式
Oct 20 Javascript
nginx配置React静态页面的方法教程
Nov 03 Javascript
基于vue.js无缝滚动效果
Jan 25 Javascript
js自定义trim函数实现删除两端空格功能
Feb 09 Javascript
vue 使用localstorage实现面包屑的操作
Nov 16 Javascript
Element Cascader 级联选择器的使用示例
Jul 27 #Javascript
vue 通过绑定事件获取当前行的id操作
Jul 27 #Javascript
Element Rate 评分的使用方法
Jul 27 #Javascript
Element InputNumber计数器的使用方法
Jul 27 #Javascript
基于Vue中的父子传值问题解决
Jul 27 #Javascript
element日历calendar组件上月、今天、下月、日历块点击事件及模板源码
Jul 27 #Javascript
JS图片懒加载技术实现过程解析
Jul 27 #Javascript
You might like
改德生G88 - 加装等响度低音提升电路
2021/03/02 无线电
PHP开发环境配置(MySQL数据库安装图文教程)
2010/04/28 PHP
PHP常用特殊运算符号和函数总结(php新手入门必看)
2013/02/02 PHP
PHP中exec与system用法区别分析
2014/09/22 PHP
php获取客户端电脑屏幕参数的方法
2015/01/09 PHP
php检查日期函数checkdate用法实例
2015/03/19 PHP
微信公众平台开发实现2048游戏的方法
2015/04/15 PHP
使用Huagepage和PGO来提升PHP7的执行性能
2015/11/30 PHP
jquery 屏蔽一个区域内的所有元素,禁止输入
2009/10/22 Javascript
动态读取JSON解析键值对的方法
2014/06/03 Javascript
javascript跨域原因以及解决方案分享
2015/04/08 Javascript
jQuery实现点击水纹波动动画
2016/04/10 Javascript
JS中实现函数return多个返回值的实例
2017/02/21 Javascript
JS拉起或下载app的实现代码
2017/02/22 Javascript
JS实现根据密码长度显示安全条功能
2017/03/08 Javascript
jQuery插件artDialog.js使用与关闭方法示例
2017/10/09 jQuery
nodejs实现UDP组播示例方法
2019/11/04 NodeJs
javascript实现贪吃蛇小游戏
2020/07/28 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
2020/07/30 Javascript
[41:13]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第一场 11.20
2020/11/20 DOTA
Python SQLite3数据库操作类分享
2014/06/10 Python
Python调用微信公众平台接口操作示例
2017/07/08 Python
python 创建一个空dataframe 然后添加行数据的实例
2018/06/07 Python
Python检查 云备份进程是否正常运行代码实例
2019/08/22 Python
解决Python3.8运行tornado项目报NotImplementedError错误
2020/09/02 Python
python模拟点击在ios中实现的实例讲解
2020/11/26 Python
html5调用摄像头功能的实现代码
2018/05/07 HTML / CSS
梅西酒窖:Macy’s Wine Cellar
2018/01/07 全球购物
微软中国官方商城:Microsoft Store中国
2018/10/12 全球购物
捷克移动配件网上商店:ProMobily.cz
2019/03/15 全球购物
俄罗斯电动工具和设备购物网站:Vseinstrumenti.ru
2020/11/12 全球购物
C#实现对任一张表的数据进行增,删,改,查要求,运用Webservice,体现出三层架构
2014/07/11 面试题
2014国庆65周年领导讲话稿(3篇)
2014/09/21 职场文书
责任书格式
2015/01/29 职场文书
大学生村官驻村工作心得体会
2016/01/23 职场文书
SpringAop日志找不到方法的处理
2021/06/21 Java/Android