vue中添加与删除关键字搜索功能


Posted in Javascript onOctober 12, 2019

具体代码如下所示:

<!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="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
 <div id="app">
  <div>
   <label>Id:
    <input type="text" v-model='id'>
   </label>
   <label for="">Name:
    <input type="text" v-model='name' @keyup.enter='add'>
   </label>
   <input type="button" value="添加" @click='addBtnFlag && add()'>
   搜索:
   <input type="text" v-model='keywords' id="search" v-focus v-color>
  </div>
  <!-- 注意: v-for 循环的时候 , key 属性只能使用 number获取string -->
  <!-- 注意:key 在使用的时候,必须使 v-bind 属性绑定的形式 指定 key 的值 -->
  <!--在组件中,使用v-for循环的时候,或者在一些特殊的情况中,如果 v-for 有问题 ,必须 在使用 v-for 的同时 ,指定 唯一的字符串/数字 类型 :key 值 -->
  <!-- v-for 中的数据,都是直接从 data 上的 list 中直接渲染过来的 -->
  <!-- 自定义一个 search 方法,同时 ,把所有的关键词,通过传参的形式,传递给了 search 方法 -->
  <!-- 在 search 方法内部,通过 执行 for 循环,把所有符合 搜索关键字的数据,保存到 一个新数组中 返回 -->
  <p v-for='item in search(keywords)' :key="item.id">
   <input type="checkbox">
   {{item.id}}---- {{item.name}}
   <!-- <a @click='shift(index)'>删除</a> -->
   -----------------<a @click.prevent="del(item.id)">删除</a>
  </p>
 </div>
 <script>
  //使用 Vue.directive() 定义全局的指令 v-focus
  //其中:参数1:指令的名称,注意,在定义的时候,指令的名称前面,不需要加 v- 前缀,
  //但是:再调用的时候,必须 在指令名称前面 加上 v- 前缀来进行调用
  //参数2:是一个对象,这个对象身上,有一些指令相关的函数可以在特定的阶段,执行相关的操作
  Vue.directive('focus', {
   bind: function (el) {
    //每当指令绑定到元素上的时候,会立即执行这个 bind 函数,只执行一次
    //注意:在每个 函数中,第一个参数,永远是 el , 表示 被绑定了指令的那个元素,这个 el 参数,是一个原生的的JS对象
    //在元素 刚绑定了指令的时候,还没有 插入到 DOM 中去,这时候,调用focus 方法没有作用
    //因为,一个元素,只有插入DOM之后,才能获取焦点
    el.focus()
   },
   inserted: function (el) {
    //inserted 表示元素 插入到DOM中的时候,会执行 inserted 函数【触发一次】
    el.focus()
   },
   updated: function (el) {
    //当VNode更新的时候 会执行updated 可能会触发多次
   },
  })
  Vue.directive('color',{
   bind: function (el) {
    el.style.color = 'red'
   }
  })
  var vm = new Vue({
   el: "#app",
   data: {
    id: '',
    name: '',
    keywords: '',//关键词
    addBtnFlag:true,
    list: [
     { id: 1, name: '奥迪' },
     { id: 2, name: '宝马' },
     { id: 3, name: '奔驰' },
     { id: 4, name: '玛莎拉蒂' },
     { id: 5, name: '保时捷' },
     { id: 6, name: '五菱宏光' }
    ]
   },
   methods: {
    add() {
     // this.list.push({ id: this.id, name: this.name })
     if( this.id == ''){
      this.addBtnFlag=false
     }else{
      var car = { id: this.id, name: this.name }
      this.list.push(car)
      this.id = this.name = ''
     }
    },
    del(id) {
     //根据ID删除
     // this.list.some((item,i)=>{
     //  if(item.id == id){
     //   this.list.splice(i,1)
     //   return true;
     //  }
     // })
     var index = this.list.findIndex(item => {
      if (item.id == id) {
       return true;
      }
     })
     this.list.splice(index, 1)
    },
    search(keywords) {
     //根据关键字,进行数据的搜索
     // var newList = []
     // this.list.forEach(item =>{
     //  if(item.name.indexOf(keywords) != -1){
     //   newList.push(item)
     //  }
     // }) 
     // return newList
     //注意:forEach some filter findIndex 这些都是属于数组的新方法,
     //都会对数组中的每一项,进行遍历,执行相关的操作;
     return this.list.filter(item => {
      //if(item.name.indexOf(keywords) != -1)
      //注意:ES6中,为字符串提供了一个新的方法,叫做 string.prototype.includes('要包含的字符串')
      //如果包含,则返回 true 否则返回false
      //contain
      if (item.name.includes(keywords)) {
       return true
      }
     })
     // return newList
    }
   }
  })
 </script>
</body>
</html>

vue中添加与删除关键字搜索功能

总结

以上所述是小编给大家介绍的vue中添加与删除关键字搜索功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
仿当当网淘宝网等主流电子商务网站商品分类导航菜单
Sep 25 Javascript
js 对小数加法精度处理示例说明
Dec 27 Javascript
Javascript基础教程之比较操作符
Jan 18 Javascript
jQuery EasyUi实战教程之布局篇
Jan 26 Javascript
BOM系列第一篇之定时器setTimeout和setInterval
Aug 17 Javascript
js实现右键自定义菜单
Dec 03 Javascript
bootstrap datetimepicker日期插件使用方法
Jan 13 Javascript
手机注册发送验证码倒计时的简单实例
Nov 15 Javascript
bootstrap自定义样式之bootstrap实现侧边导航栏功能
Sep 10 Javascript
微信小程序Page中data数据操作和函数调用方法
May 08 Javascript
微信小程序引入模块中wxml、wxss、js的方法示例
Aug 09 Javascript
jQuery实现动态操作table行
Nov 23 jQuery
jquery 遍历hash操作示例【基于ajax交互】
Oct 12 #jQuery
jquery 时间戳转日期过程详解
Oct 12 #jQuery
JS数组splice操作实例分析
Oct 12 #Javascript
微信小程序列表时间戳转换实现过程解析
Oct 12 #Javascript
微信小程序批量监听输入框对按钮样式进行控制的实现代码
Oct 12 #Javascript
基于JS实现简单滑块拼图游戏
Oct 12 #Javascript
vue使用高德地图点击下钻上浮效果的实现思路
Oct 12 #Javascript
You might like
使用 MySQL Date/Time 类型
2008/03/26 PHP
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
2011/04/18 PHP
php中使用Akismet防止垃圾评论的代码
2011/06/10 PHP
解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
2013/07/03 PHP
php解决约瑟夫环示例
2014/04/09 PHP
php实现将数据做成json的格式给前端使用
2018/08/21 PHP
My Desktop :) 桌面式代码
2008/12/29 Javascript
Javascript图像处理—为矩阵添加常用方法
2012/12/27 Javascript
jquery判断小数点两位和自动删除小数两位后的数字
2014/03/19 Javascript
js拼接html注意问题示例探讨
2014/07/14 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
JavaScript组合拼接字符串的效率对比测试
2014/11/06 Javascript
javascript模拟评分控件实现方法
2015/05/13 Javascript
javascript将DOM节点添加到文档的方法实例分析
2015/08/04 Javascript
通过XMLHttpRequest和jQuery实现ajax的几种方式
2015/08/28 Javascript
Js与Jq获取浏览器和对象值的方法
2016/03/18 Javascript
基于jQuery和CSS3实现APPLE TV海报视差效果
2017/06/16 jQuery
jQuery图片查看插件Magnify开发详解
2017/12/25 jQuery
nodejs实现OAuth2.0授权服务认证
2017/12/27 NodeJs
JS返回页面时自动回滚到历史浏览位置
2018/09/26 Javascript
[11:57]《一刀刀一天》第十七期:TI中国军团加油!
2014/05/26 DOTA
Python中应该使用%还是format来格式化字符串
2018/09/25 Python
pycharm 在windows上编辑代码用linux执行配置的方法
2018/10/27 Python
在Python中Dataframe通过print输出多行时显示省略号的实例
2018/12/22 Python
通过python爬虫赚钱的方法
2019/01/29 Python
python学习将数据写入文件并保存方法
2020/06/07 Python
巴西购物网站:Estrela10
2018/12/13 全球购物
Lancer Skincare官方网站:抗衰老皮肤护理
2020/11/20 全球购物
新学期班主任寄语
2014/01/18 职场文书
怎样写好自我评价呢?
2014/02/16 职场文书
高三毕业寄语
2014/04/10 职场文书
银行转正自我鉴定
2014/09/29 职场文书
小班下学期幼儿评语
2014/12/30 职场文书
如何使用flask将模型部署为服务
2021/05/13 Python
服务器SVN搭建图文安装过程
2022/06/21 Servers
postgresql之greenplum字符串去重拼接方式
2023/05/08 PostgreSQL