<!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"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <script src="vue.js"></script> <title>Document</title> </head> <body> <!-- v-bind 属性绑定 --> <!-- v-on 事件绑定事件 --> <div id="app"> <!-- <p>{{ message }}</p> --> <!-- <input type="button" value="按钮" :title="misss" @click="show"> --> <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: <!-- @keyup.enter针对键盘事件的 --> <input type="text" class="form-control" v-model="name" @keyup.f2 ='add'> </label> <input type="button" value="添加" class="btn btn-primary" @click='add'> <label> 搜索关键字: <input type="text" class="form-control" v-model="keywords" v-focus v-color="'green'"> </label> </div> </div> <table class="table table-bordered table-hover table-striped"> <thead> <tr> <th>id</th> <th>name</th> <th>Ctime</th> <th>Operation</th> </tr> </thead> <tbody> <tr v-for="(item,index) in seach(keywords)" :key='item.id'> <td>{{ item.id }}</td> <td>{{ item.name }}</td> <td>{{ item.time | times }}</td> <td> <a href="" @click.prevent='del(item.id)'>删除</a> </td> </tr> </tbody> </table> </div> </body> <script> //全局过滤器 //padStart是es6中的填充字符串 Vue.filter('times', function(data, quanstime=''){ let ds = new Date(data) var y = ds.getFullYear() var m = (ds.getMonth() + 1).toString().padStart(2,'0') var d = ds.getDate().toString().padStart(2,'0') //toLowerCase把所有的字符串转化成小写 if(quanstime.toLowerCase()=== 'yyyy-mm-dd'){ return `${y}-${m}-${d}` }else{ var hh = ds.getHours().toString().padStart(2,'0') var mm = ds.getMinutes().toString().padStart(2,'0') var ss = ds.getSeconds().toString().padStart(2,'0') return `${y}-${m}-${d} ${hh}:${mm}:${ss}` } }) //自定义键盘码 Vue.config.keyCodes Vue.config.keyCodes.f2 = 113 //自定义全局指令指令 Vue.directive()是自定义指令的方法 //参数一:是指令名称, //参数二:是一个对象,这个对象身上,有一些指令的相关的函数,这些函数可以在特定的阶段,执行相关的操作 Vue.directive('focus', { // 每当指令绑定到元素上的时候,会立即执行这个bind的函数,只执行一次 bind: function(){ }, // 表示元素插入到DOM中的时候,会执行inserted函数 inserted:function(el){ el.focus() }, // 当VNode更新的时候,会执行updated,可能触发多次 updated:function() { }, }) //修改输入框的颜色 Vue.directive('color',{ bind:function(el, binding){ el.style.color = binding.value } }) new Vue({ el:'#app', data:{ id:"", name:"", // message:"woaini", // misss:"点一点", keywords:'', list:[ {id:1,name:'宝马',time: new Date() }, {id:2,name:'奔驰',time: new Date() } ], }, methods: { // 添加 add(){ let car = {id:this.id, name:this.name,time:new Date()} if(this.id != 0 || this.name != 0){ this.list.push(car) } }, // 删除 // del(id){ // this.list.some((item, i) => { // if(item.id === id){ // this.list.splice(i, 1) // return true; // } // }) // }, // 删除 del(id){ var index = this.list.findIndex((item, i) => { if(item.id === id){ return true; } }) this.list.splice(index, 1) }, //搜索 // seach(keywords){ // let newList = [] // this.list.forEach(item => { // if(item.name.indexOf(keywords) != -1){ // newList.push(item) // } // }); // return newList; // } //forEach some filter(过滤) findIndex(查找索引值) 都是属于数组的新方法 //都会对每个数组进行遍历,执行相关的操作 //搜索 seach(keywords){ return this.list.filter(item =>{ //es6中新提供的字符串的方法 includes(要包含字符串),如果包含则返回true, if(item.name.includes(keywords)){ return item } }) } //过滤器的定义语法 //Vue.filter("过滤器的名称", function(指定参数,随意参数){}) }, }) </script> </html>
vue的品牌添加与筛选的功能集合
猜你喜欢
转载自www.cnblogs.com/jasone/p/12006602.html
今日推荐
周排行