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 相关文章推荐
理解JavaScript的prototype属性
Feb 11 Javascript
javascript结合html5 canvas实现(可调画笔颜色/粗细/橡皮)的涂鸦板
Apr 27 Javascript
利用js读取动态网站从服务器端返回的数据
Feb 10 Javascript
jQuery中first()方法用法实例
Jan 06 Javascript
JavaScript模板引擎用法实例
Jul 10 Javascript
JavaScript的ExtJS框架中表格的编写教程
May 21 Javascript
JavaScript知识点总结(四)之逻辑OR运算符详解
May 31 Javascript
Vuejs 页面的区域化与组件封装的实现
Sep 11 Javascript
vue实现引入本地json的方法分析
Jul 12 Javascript
three.js实现圆柱体
Dec 30 Javascript
jQuery实现的图片点击放大缩小功能案例
Jan 02 jQuery
jQuery实现电梯导航模块
Dec 22 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
PHP初学者头疼问题总结
2006/10/09 PHP
smarty模板中拼接字符串的方法
2014/02/14 PHP
php的memcache类分享(memcache队列)
2014/03/26 PHP
php实现图片局部打马赛克的方法
2015/02/11 PHP
基于thinkPHP框架实现留言板的方法
2016/10/17 PHP
PHP自定义函数获取汉字首字母的方法
2016/12/01 PHP
关于Blog顶部的滚动导航条代码
2006/09/25 Javascript
广告代码静态化js通用函数
2007/05/09 Javascript
jquery 多级下拉菜单核心代码
2010/05/21 Javascript
js创建数据共享接口——简化框架之间相互传值
2011/10/23 Javascript
JS中使用sort结合localeCompare实现中文排序实例
2014/07/23 Javascript
Backbone.js 0.9.2 源码注释中文翻译版
2015/06/25 Javascript
AngularJs实现ng1.3+表单验证
2015/12/10 Javascript
学做Bootstrap的第一个页面
2016/05/15 HTML / CSS
原生JS实现N级菜单的代码
2017/05/21 Javascript
javascript 封装Date日期类实例详解
2017/05/28 Javascript
Angular项目中$scope.$apply()方法的使用详解
2017/07/26 Javascript
vue2.0 移动端实现下拉刷新和上拉加载更多的示例
2018/04/23 Javascript
讲解vue-router之命名路由和命名视图
2018/05/28 Javascript
laydate如何根据开始时间或者结束时间限制范围
2018/11/15 Javascript
jquery 遍历hash操作示例【基于ajax交互】
2019/10/12 jQuery
JavaScript forEach中return失效问题解决方案
2020/06/01 Javascript
python中的计时器timeit的使用方法
2017/10/20 Python
Python3 queue队列模块详细介绍
2018/01/05 Python
浅谈python已知元素,获取元素索引(numpy,pandas)
2019/11/26 Python
泰国的头号网上婴儿用品店:Motherhood.co.th
2019/04/09 全球购物
英国领先的电动可调床制造商:Laybrook
2019/12/26 全球购物
什么是ARP(Address Resolution Protocol)地址解析协议
2013/10/31 面试题
蜜蜂引路教学反思
2014/02/04 职场文书
个性婚礼策划方案
2014/05/17 职场文书
2014新生大学四年计划书
2014/09/21 职场文书
党员批评与自我批评发言稿
2014/10/14 职场文书
加强作风建设心得体会
2014/10/22 职场文书
社区艾滋病宣传活动总结
2015/05/07 职场文书
学生病假条怎么写
2015/08/17 职场文书
大学组织委员竞选稿
2015/11/21 职场文书