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 相关文章推荐
JavaScript类和继承 prototype属性
Sep 03 Javascript
Javascript this 的一些学习总结
Aug 31 Javascript
javaScript函数中执行C#代码中的函数方法总结
Aug 07 Javascript
三种方式获取XMLHttpRequest对象
Apr 21 Javascript
手机号码,密码正则验证
Sep 04 Javascript
利用原生JavaScript获取元素样式只是获取而已
Oct 08 Javascript
JavaScript整除运算函数ceil和floor的区别分析
Apr 14 Javascript
JavaScript中数组的合并以及排序实现示例
Oct 24 Javascript
用JavaScript动态建立或增加CSS样式表的实现方法
May 20 Javascript
js发送短信倒计时的简单实现方法
Sep 08 Javascript
JS实现太极旋转思路分析
Dec 09 Javascript
原生js封装运动框架的示例讲解
Oct 01 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
PHP获取服务器端信息的方法
2014/11/28 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
2015/04/26 PHP
laravel 根据不同组织加载不同视图的实现
2019/10/14 PHP
javascript 特性检测并非浏览器检测
2010/01/15 Javascript
JQuery 文本框回车跳到下一个文本框示例代码
2013/08/30 Javascript
JQuery显示隐藏DIV的方法及代码实例
2015/04/16 Javascript
JavaScript数据类型学习笔记
2016/01/25 Javascript
JS控制静态页面之间传递参数获取参数并应用的简单实例
2016/08/10 Javascript
javascript实现日期三级联动下拉框选择菜单
2020/12/03 Javascript
使用Bootrap和Vue实现仿百度搜索功能
2017/10/26 Javascript
sublime text配置node.js调试(图文教程)
2017/11/23 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
详解js常用分割取字符串的方法
2019/05/15 Javascript
layui table 获取分页 limit的方法
2019/09/20 Javascript
[52:05]EG vs OG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
下载糗事百科的内容_python版
2008/12/07 Python
Python字符串中查找子串小技巧
2015/04/10 Python
Python实现获取域名所用服务器的真实IP
2015/10/25 Python
Python设计模式编程中Adapter适配器模式的使用实例
2016/03/02 Python
使用Python从有道词典网页获取单词翻译
2016/07/03 Python
python删除某个字符
2018/03/19 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
2020/07/03 Python
python 提高开发效率的5个小技巧
2020/10/19 Python
联想智利官方网站:Lenovo Chile
2020/06/03 全球购物
strstr()的简单实现
2013/09/26 面试题
师范大学音乐表演专业求职信
2013/10/23 职场文书
毕业实习个人鉴定范文
2013/12/10 职场文书
安全生产网格化管理实施方案
2014/03/01 职场文书
幼儿园大班区域活动总结
2014/07/09 职场文书
学生抄作业检讨书(2篇)
2014/10/17 职场文书
会议通知范文
2015/04/15 职场文书
2015年重阳节活动主持词
2015/07/30 职场文书
高一地理教学工作总结
2015/08/12 职场文书
python使用torch随机初始化参数
2022/03/22 Python
Ruby处理CSV数据方法详解
2022/04/18 Ruby
Java数据结构之堆(优先队列)
2022/05/20 Java/Android