Vue学习之按键修饰符

Vue学习之按键修饰符Vue学习之按键修饰符

大家好,又见面了,我是你们的朋友全栈君。

Vue按键修饰符

1.准备页面

沿用前面案例的页面

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="./lib/vue-2.4.0.js"></script>
    <link rel="stylesheet" href="./lib/bootstrap-3.3.7.css">
</head>
<body>
    <div id="app">
        
        
        <div class="panel panel-primary">
              <div class="panel-heading">
                    <h3 class="panel-title">品牌管理</h3>
              </div>
              <div class="panel-body form-inline">
                    <label>
                    Id:
                    <input type="text" class="form-control" v-model="id" >
                    </label>
            
                    <label>
                    Name:
                    <input type="text" class="form-control" v-model="name" >
                    </label>
            
                    
                    <input type="button" value="添加" 
                        class="btn btn-primary" @click='add'>

                    <label>
                        搜索名称关键字:
                        <input type="text" class="form-control" v-model="keywords">
                    </label>    
              </div>
        </div>
        
        
        
        <table class="table table-bordered table-hover table-striped">
            <thead>
                <tr>
                    <th>id</th>
                    <th>name</th>
                    <th>cTime</th>
                    <th>操作</th>
                </tr>
            </thead>
            <tbody>
                <tr v-for="item in search(keywords)" :key="item.id">
                    <td>{
  
  {item.id}}</td>
                    <td>{
  
  {item.name}}</td>
                    <td>{
  
  {item.ctime | msgDateFormat('yyyy-mm-dd hh-mi-ss') }}</td>
                    <td><a href="" @click.prevent="del(item.id)">删除</a></td>
                </tr>
            </tbody>
        </table>
        
        
        
    </div>
    <script>
       
        var vm = new Vue({
            el: "#app",
            data: {
                id:'',
                name:'',
                keywords:'',
                list:[
                    {id:1,name:'奔驰',ctime:new Date()},
                    {id:2,name:'宝马',ctime:new Date()}
                ]
            },
            methods: {
                add(){
                    // 添加记录到list中
                    this.list.push({id:this.id,name:this.name,ctime:new Date()})
                    // 将输入框置空
                    this.id=this.name=''
                },
                del(id){
                    // some方法循环数组,返回true可以终止循环
                    // this.list.some((item,i) =>{
                     //   if(item.id == id){
                            // 移除记录 1 移除一条记录
                     //       this.list.splice(i,1);
                            // 返回true 终止循环
                      //      return true;
                      //  }
                    //}) 
                    // 通过findIndex方法获取要删除记录的index
                    var index = this.list.findIndex(item => {
                        if(item.id == id){
                            return true
                        }
                    })
                    // 通过splice方法来移除记录
                    this.list.splice(index,1);
                },
                search(keywords){
                    // 保存新的数组
                   // var newList = []
                   // this.list.forEach(item => {
                        // 判断循环的记录是否包含的查询的关键字
                       // if(item.name.indexOf(keywords) != -1){
                            // 将循环的记录添加到新的数组中
                         //   newList.push(item)
                      //  }
                  //  })
                    // 返回数组信息
                   // return newList
                  // filter 过滤  返回满足条件的数组
                  return  this.list.filter(item => {
                       // includes 是否包含
                       if(item.name.includes(keywords)){
                            return item
                       }
                   })
                }
            },
            filters:{ // 通过局部过滤器来实现
                msgDateFormat:function(msg,pattern=''){
                    // 将字符串转换为Date类型
                    var mt = new Date(msg)
                    // 获取年份
                    var y = mt.getFullYear()
                    // 获取月份 从0开始 
                    var m = (mt.getMonth()+1).toString().padStart(2,"0")
                    // 获取天数
                    var d = mt.getDate();
                    if(pattern === 'yyyy-mm-dd'){
                        return y+"-"+m+"-"+d
                    }
                    // 获取小时
                    var h = mt.getHours().toString().padStart(2,"0")
                    // 获取分钟
                    var mi = mt.getMinutes().toString().padStart(2,"0")
                    // 获取秒
                    var s = mt.getSeconds().toString().padStart(2,"0")
                    // 拼接为我们需要的各式
                    return y+"-"+m+"-"+d+" "+h+":"+mi+":"+s
                }
            }
        })
    </script>
</body>
</html>

2.keyup处理

我们希望当’品牌名称’输入完成后自动的调用”add”方法完成添加操作,这时我们可以给输入框绑定一个 键盘松开的事件”keyup”

在这里插入图片描述

效果

在这里插入图片描述

通过效果我们发现虽然效果实现了,但是并不是我们所希望的,这时我们可以添加对应的按键修饰符来处理。

3.系统修饰键

系统本身给我们提供的有几个修饰键,我们先来使用下(https://cn.vuejs.org/v2/guide/events.html)。

在这里插入图片描述

比如: enter键

在这里插入图片描述

效果

在这里插入图片描述

回车效果不好演示,自行脑补哦

4.自定义修饰键

系统提供的修饰键,就那么几个,这时如果我们想要自定义的话第一种方式就是使用按键对应的值来处理(https://dpb-bobokaoya-sm.blog.csdn.net/article/details/96280857)

在这里插入图片描述

比如我们要使用”F2″来实现 松开”F2″来添加数据的效果,可以如下实现

在这里插入图片描述

在这里插入图片描述

效果实现,但是 @keyup.113=”add”这种用具体值表示的方式并不是太容易记住,这时我们可以定义一个全局的按键修饰符,如下

在这里插入图片描述

使用自定义的按键修饰符

在这里插入图片描述

效果
在这里插入图片描述

搞定~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106497.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月23日 上午6:40
下一篇 2022年4月23日 上午6:40


相关推荐

  • Flume中sources、channels、sinks的常用配置(多个案例)

    Flume中sources、channels、sinks的常用配置(多个案例)Flume 中 sources channels sinks 的常用配置 多个案例 文章目录 Flume 中 sources channels sinks 的常用配置 多个案例 Flume 基础及架构案例 1 netcat gt memory gt logger 案例 2 exec gt file gt logger 案例 3 spooldir gt memory gt hdfs 读取目录文件到 HDFS 案例 4 选择器 selector 两种类型 replicating 副本 multiplexin

    2026年3月17日
    2
  • 使用Vue实现图片上传的三种方式

    使用Vue实现图片上传的三种方式项目中需要上传图片可谓是经常遇到的需求 本文将介绍 3 种不同的图片上传方式 在这总结分享一下 有什么建议或者意见 请大家踊跃提出来 没有业务场景的功能都是耍流氓 那么我们先来模拟一个需要实现的业务场景 假设我们要做一个后台系统添加商品的页面 有一些商品名称 信息等字段 还有需要上传商品轮播图的需求 我们就以 Vue Element ui 封装组件为例子聊聊如何实现这个功能 其他框架或者不用框架

    2026年3月20日
    2
  • Pycharm调试_pycharm打开远程项目

    Pycharm调试_pycharm打开远程项目1.前期准备保证有一台Linux(我用的是ubuntuserver1404),系统自带python以及python3环境;保证安装pycharm的设备可以ssh上去,这个就不多说了.推荐采用本机安装虚拟机,不要问为啥不直接使用本机的python,,,,因为调试时有些包在window上确实不好办,还有一点,Linux上做开发确实爽.2.配置pycharm2….

    2025年7月28日
    4
  • 讯飞星火AI PPT怎么用_讯飞星火一键制作PPT图文教程

    讯飞星火AI PPT怎么用_讯飞星火一键制作PPT图文教程

    2026年3月14日
    1
  • java 反编译器_java 反编译器

    java 反编译器_java 反编译器xjad反编译工具下载使用反编译时把class文件直接拖拽至工具内即可,如果反编译结果不对时把class文件重新去拿原始的不要编辑打开,或者放在一个文件夹内在试。反编译后的代码没有注释、注解等,反正能用得细心看看调整。点击下载工具http://a.xzfile.com/down2/XJadfanbinayi_downcc.zip…

    2022年8月19日
    12
  • OGG安装配置_ogg是什么格式的文件

    OGG安装配置_ogg是什么格式的文件OGG简介(GoldenGate)OGG是一种基于日志的结构化数据复制软件OGG能够实现大量交易数据的实时捕捉,变换和投递,实现源数据库与目标数据库的数据同步,保持最少10ms的数据延迟。OGG安装1.使用Oracle用户,且加入oinstall用户组,GoldenGate安装在Oracle用户所在/home/oracle/app/OGG_linux/ggs目录下。2.源…

    2025年7月17日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号