<!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中添加与删除,关键字搜索的更多相关文章

  1. JS-表格数据的添加与删除、搜索

    <!doctype html><html><head><meta charset="utf-8"><title>JS练习 ...

  2. JavaScript向select下拉框中添加和删除元素

    JavaScript向select下拉框中添加和删除元素 1.说明 a   利用append()方法向下拉框中添加元素 b   利用remove()方法移除下拉框中最后一个元素 2.设计源码 < ...

  3. 对List遍历过程中添加和删除的思考

    对List遍历过程中添加和删除的思考 平时开发过程中,不少开发者都遇到过一个问题:在遍历集合的的过程中,进行add或者remove操作的时候,会出现2类错误,包括:java.util.Concurre ...

  4. vue中添加util公共方法&&ES6之import、export

    vue中添加util公共方法&&ES6之import.export https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Re ...

  5. Vue实现添加、删除、关键字查询

    从今天开始,将不定期更新关于 Vue 的学习以及各种方法的使用,好了,下面就开始吧 Vue的实例创建首先需要我们引入一个vue.js(也可以在本地npm安装vue,我为了省事就...),然后在HTML ...

  6. vue中使用some删除list中的数据

    在vue中可以使用some方法查找需要删除的所以 this.list.some((item, i) => { if (item.id == id) { this.list.splice(i, 1 ...

  7. 怎样Zbrush 4R7中添加和删除SubTool

    添加或删除SubTool在ZBrush®软件中是非常简单易操作的,通常在用SubTool面板已经给我们提供了相应的命令来对其进行操作,它能够将一个或多个格式为ZTL的文件同时添加进SubTool里. ...

  8. MySql中添加用户/删除用户

    MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束): 1.新建用户 登录MYSQL: @>mysql -u root -p @>密码 ...

  9. 在vue中添加sass的配置的方法

    1.安装sass的依赖包 npm install --save-dev sass-loader //sass-loader依赖于 node-sass npm install --save-dev no ...

随机推荐

  1. AngularJS unit test report / coverage report

    参考来源: http://www.cnblogs.com/vipyoumay/p/5331787.html 这篇是学习基于Angularjs的nodejs平台的单元测试报告和覆盖率报告.用到的都是现有 ...

  2. MonkeyRunner基本操作

    1. #导入模块; from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage 2. #连接当前设备,并返 ...

  3. mariadb数据库(4)集群

    [主从架构]确保主从的两个数据库一致. um配置 [mariadb] name=MariaDB baseurl=http://mirrors.ustc.edu.cn/mariadb/yum/10.3/ ...

  4. linux常用命令(18)find exec

    find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了.-exec  参数后面跟的是command命令,它的终止是以 ...

  5. Eclipse进行Debug时断点上有一个斜杠,并且debug没有停在断点处

    断点上有斜杠,这是由于设置了Skip All Breakpoints的缘故,调试会忽略所有断点,执行完,只需取消Skip All Breakpoints即可,操作:Run-->Skip All ...

  6. 使用MJRefresh自定义下拉刷新,上拉加载动画

    有时候我们需要自己设置下拉刷新,上拉加载动画的实现,这里主要是记录下使用MJRefresh自定义下拉刷新,上拉加载动画..... 下拉刷新我们只需要继承MJRefreshGifHeader即可: 实现 ...

  7. JavaScript(3)——文档工具

    文档工具 LEARN HTML = 教程 HTML REFERENCE = 字典 HTML + CSS + JAVASCRIPT = DYNAMIC  HTML 推荐浏览器: Chrome浏览器(有丰 ...

  8. sql 死锁查看

    --每秒死锁数量 SELECT * FROM sys.dm_os_performance_counters WHERE counter_name LIKE 'Number of Deadlocksc% ...

  9. 【AMAD】beaker -- 用于session和缓存的WSGI中间件

    简介 动机 作用 个人评分 简介 Beaker1是一个web session和通用缓存库,并且包含一个WSGI中间件可以用于你的web应用. 动机 Beaker是基于MyghtyUtils2(一个古老 ...

  10. 【并行计算-CUDA开发】OpenCL、OpenGL和DirectX三者的区别

    什么是OpenCL? OpenCL全称Open Computing Language,是第一个面向异构系统通用目的并行编程的开放式.免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器 ...