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 相关文章推荐
jQuery侧边栏随窗口滚动实现方法
Mar 04 Javascript
浅析ajax请求json数据并用js解析(示例分析)
Jul 13 Javascript
JS通过相同的name进行表格求和代码
Aug 18 Javascript
点击进行复制的JS代码实例
Aug 23 Javascript
document.documentElement和document.body区别介绍
Sep 16 Javascript
回车直接实现点击某按钮的效果即触发单击事件
Feb 27 Javascript
JavaScript的设计模式经典之代理模式
Feb 24 Javascript
vue实现全选和反选功能
Aug 31 Javascript
深入浅出理解JavaScript高级定时器原理与用法
Aug 02 Javascript
Angular5中状态管理的实现
Sep 03 Javascript
JS中超越现实的匿名函数用法实例分析
Jun 21 Javascript
Vue实现boradcast和dispatch的示例
Nov 13 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 函数使用方法与函数定义方法
2010/05/09 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
2014/06/19 PHP
php简单实现数组分页的方法
2016/04/30 PHP
简单PHP会话(session)说明介绍
2016/08/21 PHP
ThinkPHP实现图片上传操作的方法详解
2017/05/08 PHP
JavaScript replace(rgExp,fn)正则替换的用法
2010/03/04 Javascript
javascript中使用css需要注意的地方小结
2010/09/01 Javascript
passwordStrength 基于jquery的密码强度检测代码使用介绍
2011/10/08 Javascript
js身份证判断方法支持15位和18位
2014/03/18 Javascript
原生js实现移动端瀑布流式代码示例
2015/12/18 Javascript
聊一聊JS中的prototype
2016/09/29 Javascript
js实时获取窗口大小变化的实例代码
2016/11/18 Javascript
nodejs实现邮件发送服务实例分享
2017/03/29 NodeJs
javascript 数据存储的常用函数总结
2017/06/01 Javascript
微信小程序button组件使用详解
2018/01/31 Javascript
在Vue项目中取消ESLint代码检测的步骤讲解
2019/01/27 Javascript
每周一练 之 数据结构与算法(Stack)
2019/04/16 Javascript
浅谈Layui的eleTree树式选择器使用方法
2019/09/25 Javascript
JavaScript单线程和任务队列原理解析
2020/02/04 Javascript
微信小程序实现购物车功能
2020/11/18 Javascript
Vue中的nextTick作用和几个简单的使用场景
2021/01/25 Vue.js
[01:00:06]加油DOTA_EP01_网络版
2014/08/09 DOTA
Python中捕捉详细异常信息的代码示例
2014/09/18 Python
MySQL最常见的操作语句小结
2015/05/07 Python
Python面向对象之类的封装操作示例
2019/06/08 Python
Python模块相关知识点小结
2020/03/09 Python
Python 实现使用空值进行赋值 None
2020/03/12 Python
python实现移动木板小游戏
2020/10/09 Python
Python Pandas数据分析工具用法实例
2020/11/05 Python
初三政治教学反思
2014/01/30 职场文书
大学同学十年聚会感言
2014/02/21 职场文书
高校教师岗位职责
2014/03/18 职场文书
教师自我剖析材料范文
2014/09/30 职场文书
新郎结婚保证书
2015/02/26 职场文书
企业管理制度设计时要注意的几种“常见病”!
2019/04/19 职场文书
Go中的条件语句Switch示例详解
2021/08/23 Golang