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/106496.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • intel酷睿游戏计算机,Intel酷睿九代i3-9100F配RX590游戏电脑配置单,预算3500元不到…「建议收藏」

    intel酷睿游戏计算机,Intel酷睿九代i3-9100F配RX590游戏电脑配置单,预算3500元不到…「建议收藏」想要组装一套游戏电脑主机,主要是玩绝地求生,想要1080P高画质,不过预算有限,想要一套3000-3500元的电脑主机,所以追求性价比。而下面装机之家晓龙分享一套电脑配置清单,采用了i3-9100F和性价比十足的RX5908G独显,显卡性能超GTX10606G,也就是说,能够在1080P高画质下畅玩绝地求生,来看看,有主机差不多预算完全可以参考。九代i3-9100F配RTX590电脑组装机配置…

    2022年7月16日
  • docker(4)解决pull镜像速度缓慢「建议收藏」

    docker(4)解决pull镜像速度缓慢「建议收藏」前言上一篇讲到pull镜像,但是pull镜像的时候下拉的速度实在感人,有什么解决办法吗?我们只需将docker镜像源修改为国内的将docker镜像源修改为国内的:在/etc/docker/d

    2022年7月29日
  • java jasypt_jasypt命令行工具的使用说明

    java jasypt_jasypt命令行工具的使用说明jasypt能够以很简单的方式为Java项目提供加密功能,这种简单的方式体现着它的命令行工具,与Spring,Hibernate,Springsecurity,wicket等第三方框架的集成。本文参加jasypt官方网站:http://www.jasypt.org/下载jasypt包,解压缩到本地目录。如下图:根目录:命令行工具目录:说明:在lib目录下是jasypt的核心jar和与第三方组件…

    2022年9月26日
  • jrtplib学习

    jrtplib学习这是JRTPLIB@Conference系列的第三编《JRTPLIB的几个重要类说明》,本系列的主要工作是实现一个基于JRTPLIB的,建立在RTP组播基础上的多媒体视频会议系统。这只是一个实验系统,用于学习JRTPLIB、RTP、和多媒体相关的编程,不是一个完善的软件工程。而且,我只会在业余的时间出于兴趣写一写。有志同道合的朋友可以通过tinnal@136.com这个邮箱或博客回复(推荐)和我交

    2022年7月28日
  • 最新手机号段归属地数据库(2017年4月16日版)免费下载

    最新手机号段归属地数据库(2017年4月16日版)免费下载2017年4月16日版360569条记录最新手机号段数据库号码归属地数据库移动号段联通号段电信号段14号段170号段(虚拟运营商)权威全面准确规范字段包括省份城市运营商邮编区号等信息,对于数据分析、号码归属地查询等非常有帮助三种格式:MYSQL,MSSQL,accessMDB格式字段:手机号码前7位,省份,城市,区号,运营商,邮编末…

    2022年7月22日
  • VB程序设计教程(第四版)龚沛曾 实验8-2「建议收藏」

    VB程序设计教程(第四版)龚沛曾 实验8-2「建议收藏」VB程序设计教程(第四版)龚沛曾实验8-2将斐波那契数列的前10项写入文件Fb.dat,然后从该文件将数据读取出来并计算合计和平均数,最后送入列表框。要求:文件数据格式如2.8.2所示,列表框中项目格式如图2.8.3所示。…

    2022年10月7日

发表回复

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

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