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基础知识filter()和find()实例说明
Jul 06 Javascript
原生js编写设为首页兼容ie、火狐和谷歌
Jun 05 Javascript
JS实现鼠标经过好友列表中的好友头像时显示资料卡的效果
Jul 02 Javascript
javascript框架设计之种子模块
Jun 23 Javascript
原生js实现数字字母混合验证码的简单实例
Dec 10 Javascript
Jquery Easyui对话框组件Dialog使用详解(14)
Dec 19 Javascript
使用JS模拟锚点跳转的实例
Feb 01 Javascript
vue使用vue-i18n实现国际化的实现代码
Apr 08 Javascript
详解几十行代码实现一个vue的状态管理
Jan 28 Javascript
微信小程序实现带放大效果的轮播图
May 26 Javascript
微信小程序实现通讯录列表展开收起
Nov 18 Javascript
关于小程序优化的一些建议(小结)
Dec 10 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 杂谈《重构-改善既有代码的设计》之三 重新组织数据
2012/04/09 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
2014/08/23 PHP
php截取指定2个字符之间字符串的方法
2015/04/15 PHP
PHP数组生成XML格式数据的封装类实例
2016/11/10 PHP
ThinkPHP使用getlist方法实现数据搜索功能示例
2017/05/08 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
2017/12/28 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
php实现微信企业转账功能
2018/10/02 PHP
PHP底层运行机制与工作原理详解
2020/07/31 PHP
PHP基于ip2long实现IP转换整形
2020/12/11 PHP
JavaScript使用过程中需要注意的地方和一些基本语法
2010/08/26 Javascript
JavaScript高级程序设计(第3版)学习笔记11 内建js对象
2012/10/11 Javascript
jquery next nextAll nextUntil siblings的区别介绍
2013/10/05 Javascript
jquery图片切换插件
2015/03/16 Javascript
jqGrid用法汇总(全经典)
2016/06/28 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
2016/12/07 Javascript
node.js发送邮件email的方法详解
2017/01/06 Javascript
使用vue.js实现联动效果的示例代码
2017/01/10 Javascript
几行js代码实现自适应
2017/02/24 Javascript
jQuery插件FusionCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/06 Javascript
在vue项目中正确使用iconfont的方法
2018/09/28 Javascript
vue实现导航菜单和编辑文本的示例代码
2020/07/04 Javascript
vue接通后端api以及部署到服务器操作
2020/08/13 Javascript
[50:22]完美盛典-2018年度红毯走秀
2018/12/16 DOTA
使用Python标准库中的wave模块绘制乐谱的简单教程
2015/03/30 Python
Python及Pycharm安装方法图文教程
2019/08/05 Python
Django 框架模型操作入门教程
2019/11/05 Python
部署Django到阿里云服务器教程示例
2020/06/03 Python
英国美术用品购物网站:Cass Art
2019/10/08 全球购物
初中考试作弊检讨书
2014/02/01 职场文书
淘宝店策划方案
2014/06/07 职场文书
美术社团活动总结
2014/06/27 职场文书
教师自查自纠材料
2014/10/14 职场文书
2014年社区教育工作总结
2014/12/02 职场文书
个人党性锻炼总结
2015/03/05 职场文书
听证通知书
2015/04/24 职场文书