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 引发两次$(document.ready)事件
Jan 15 Javascript
从零学JSON之JSON数据结构
May 19 Javascript
jquery单击事件和双击事件冲突解决方案
Mar 02 Javascript
jQueryUI中的datepicker使用方法详解
May 25 Javascript
AngularJS模块详解及示例代码
Aug 17 Javascript
很棒的js Tab选项卡切换效果
Aug 30 Javascript
ASP.NET jquery ajax传递参数的实例
Nov 02 Javascript
jQuery 选择符详细介绍及整理
Dec 02 Javascript
详解原生js实现offset方法
Jun 15 Javascript
JS简单实现点击跳转登陆邮箱功能的方法
Oct 31 Javascript
vue的状态管理模式vuex
Nov 30 Javascript
Vue项目中使用mock.js的完整步骤
Jan 12 Vue.js
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 ios推送(代码)
2013/07/01 PHP
简单的php缓存类分享     php缓存机制
2014/01/22 PHP
laravel接管Dingo-api和默认的错误处理方式
2019/10/25 PHP
两个JavaScript jsFiddle JSBin在线调试器
2010/03/14 Javascript
JS trim去空格的最佳实践
2011/10/30 Javascript
html中的input标签的checked属性jquery判断代码
2012/09/19 Javascript
javascript教程:关于if简写语句优化的方法
2014/05/17 Javascript
angularjs创建弹出框实现拖动效果
2020/08/25 Javascript
Vue.js每天必学之内部响应式原理探究
2016/09/07 Javascript
javascript函数中的3个高级技巧
2016/09/22 Javascript
js实现点击每个li节点,都弹出其文本值及修改
2016/12/15 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
2017/06/13 Javascript
vue.js实现数据动态响应 Vue.set的简单应用
2017/06/15 Javascript
AngularJS中重新加载当前路由页面的方法
2018/03/09 Javascript
在vue-cli搭建的项目中增加后台mock接口的方法
2018/04/26 Javascript
vue实现分页组件
2020/06/16 Javascript
JavaScript中的回调函数实例讲解
2019/01/27 Javascript
微信小程序按顺序同步执行的两种方式
2019/12/20 Javascript
原生js canvas实现鼠标跟随效果
2020/08/02 Javascript
如何在vue中使用kindeditor富文本编辑器
2020/12/19 Vue.js
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
2019/02/12 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
2019/08/09 Python
Pandas+Matplotlib 箱式图异常值分析示例
2019/12/09 Python
python3.7调试的实例方法
2020/07/21 Python
彻底解决pip下载pytorch慢的问题方法
2021/03/01 Python
css3 flex布局 justify-content:space-between 最后一行左对齐
2020/01/02 HTML / CSS
朗仕(Lab series)英国官网:雅诗兰黛集团男士专属护肤品牌
2017/11/28 全球购物
Peter Millar官网:美国高档生活服饰品牌
2018/07/02 全球购物
如何启动时不需输入用户名与密码
2014/05/09 面试题
正隆泰信息技术有限公司上机题
2012/06/14 面试题
商场经理竞聘演讲稿
2014/01/01 职场文书
行政监察建议书
2014/05/19 职场文书
关于责任的演讲稿
2014/05/20 职场文书
检查机关领导群众路线教育实践活动个人整改措施
2014/10/28 职场文书
抖音短视频(douyin)去水印工具的实现代码
2021/03/30 Javascript
Go使用协程交替打印字符
2021/04/29 Golang