指令综合运用-品牌案例.html

2021-04-01 13:24

阅读:775

标签:ros   pat   get   contain   indexof   include   括号   ase   methods   

案列:使用vue实现品牌的增加,删除和关键字搜索以及时间的处理

分析:手动实现筛选的方式:

  • 筛选框绑定到vm实列中的searchName属性中:
  • hr> 输入筛选名称:
    
    input type="text" v-model="searchName">

     

  • 使用v-for指令循环每一行的数据的时候,我们不再直接item in list ,而是“ in ”一个过滤的methods方法,同时把过滤条件searchName 传递进去:
  • tbody>
    
          tr v-for="item in search(searchName)">
    
            td>{{item.id}}td>
    
            td>{{item.name}}td>
    
            td>{{item.ctime}}td>
    
            td>
    
              a href="#" @click.prevent="del(item.id)">删除a>
    
            td>
    
          tr>
    
        tbody>

     

  • search过滤方法中,使用数组filter方法进行过滤,实现关键字搜索:
  • search(){
        return this.list.filter(x=>{
             return x.name.indexof(name)!=-1;
    
       });  
    }

     

 重头大戏开场

  1 DOCTYPE html>
  2 html lang="en">
  3 head>
  4     meta charset="UTF-8">
  5     meta name="viewport" content="width=device-width, initial-scale=1.0">
  6     title>vue实列title>
  7     script src="https://cdn.bootcss.com/vue/2.5.16/vue.js">script>
  8     
  9     link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.4.1/dist/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
 10 head>
 11 body>
 12     div id="app">
 13 
 14         div class="panel panel-preimary">
 15             div class="panel-heading">
 16                 h3 class="panel-title">添加产品h3>
 17             div>
 18             div class="panel-body form-inline">
 19                 label>
 20                     ID:
 21                     input type="text" class="form-control" v-model="id">
 22                 label>
 23                 label>
 24                     Name:
 25                     input type="text" class="form-control" v-model="name">
 26                 label>
 27                     
 28                     input type="button" value="添加" class="btn btn-primary" @click="add">
 29                     label>
 30                         搜索关键字:
 31                         input type="text" class="from-control" v-model="keywords">
 32                     label>
 33             div>
 34         div>
 35         table class="table table-bordered table-hover table-striped">
 36             thead>
 37                 tr>
 38                     th>Idth>
 39                     th>Nameth>
 40                     th>CTIMEth>
 41                     th>OPERATIONth>
 42                 tr>
 43             thead>
 44             tbody>
 45             
 46                 
 47                 
 48                 
 49 
 50                 tr v-for="item in search(keywords)" :key="item.id">
 51                     td>{{ item.id }}td>
 52                     td v-text="item.name">td>
 53                     td>{{ item.ctime | dateFormat(‘yyyy-MM-dd‘)}}td>
 54                     td>
 55                       a href="" @click.prevent="del(item.id)">删除a>
 56                     td>
 57                   tr>
 58             tbody>
 59         table>
 60     div>
 61 
 62 
 63     script>
 64         
 65         Vue.filter(dateFormat,function (dateStr,pattern=‘‘) {
 66             //根据字符串获取特定时间
 67             var dt = new Date(dateStr)
 68             //yyy-mm-dd
 69             var y = dt.getFullYear()
 70 
 71             var m = dt.getMonth()+1
 72 
 73             var d = dt.getDate()
 74             if(pattern && pattern.toLowerCase() == yyy-mm-dd){
 75                 return ${y}-${m}-${d}
 76             }else{
 77                 var hh = dt.getHours()
 78                 //padStart:开始填充;padEnd():末尾填充(如两位填充数字1:01和10)
 79                 var mm = (dt.getMinutes()).toString().padStart(2,0)
 80                 var ss = (dt.getSeconds()).toString().padStart(2,0)
 81                 return ${y}-${m}-${d} ${hh}:${mm}:${ss}
 82             }
 83         })
 84 
 85         var vm = new Vue({
 86             el:"#app",
 87             data :{
 88                 dt:new Date(),
 89                 id:null,
 90                 name:null,
 91                 keywords:‘‘,
 92                 list:[
 93                     { id: 1, name: 蛋挞, ctime: new Date() },
 94                     { id: 2, name: 奶茶, ctime: new Date() }
 95 
 96                 ]
 97 
 98             },
 99             methods:{
100        
101 
102 
103                 add(){
104                     //console.log(‘ok‘)
105                     //分析
106                     //1.获取到id与name直接从data中获取
107                     //2.组织出一个对象
108                     //3.把这个对象,调用数组的方法, 添加到当前list中
109                     //4.在vue中我们已经实现了数据的双向绑定通过v-model每当我们修改data中的数据的时候我们vue会默认监听会默认监听到数据的改动,自动把最新的数据,应用到页面上
110                     //5.在vue中我们更多的是在进行 VM中 Model 数据的操作,同时,在操作Model数据的时候,指定的业务逻辑操作;
111 
112 
113                     var food = { id: this.id, name: this.name, ctime: new Date()}
114 
115                     this.list.push(food);
116                     this.id = this.name =‘‘;
117                 },
118                 del(id){
119                     //我们根据ID进行数据的删除
120                     //1.我们根据Id找到我们要删除项的索引
121                     //2.如果我们找到了索引就开始调用数组的splice的方法
122 
123                  /*   this.list.some((item,i) => {
124                         if(item.id == id){
125                             this.list.splice(i,1)
126                             //在数组some方法中如果reyurn true,就会立即终止这个数组的后续循环
127                             return true;
128                         }
129 
130                     }) */
131 
132 
133                     var index = this.list.findIndex(item=>{
134                         if(item.id == id){
135                             return true;
136                         }
137                     })
138                     //console.log(index)
139                     this.list.splice(index,1)
140                 },
141                 search(keywords){
142 
143                     /* var newlist = []
144                     this.list.forEach(item=>{
145                         if(item.name.indexof(keywords)!=-1){
146                             newList.push(item)
147                         }
148                     })
149                     return newList(item)*/
150 
151                     //注意:  forEach   some   filter   findIndex   这些都属于数组的新方法,
152                     //都会对数组每一项进行遍历执行相关操作
153                     return this.list.filter(item =>{
154                                     // if(item.name.indexOf(keywords) != -1)
155 
156                                     // 注意 : ES6中,为字符串提供了一个新方法,叫做  String.prototype.includes(‘要包含的字符串‘)
157                                     //  如果包含,则返回 true ,否则返回 false
158                                     //  contain
159                                     if (item.name.includes(keywords)) {
160                                     return item
161                                     }
162                     })
163                     //return newList
164                                  
165                 }
166             },
167             filters: { // 定义私有过滤器    过滤器有两个 条件  【过滤器名称 和 处理函数】
168         // 过滤器调用的时候,采用的是就近原则,如果私有过滤器和全局过滤器名称一致了,这时候 优先调用私有过滤器
169         dateFormat: function (dateStr, pattern = ‘‘) {
170           // 根据给定的时间字符串,得到特定的时间
171           var dt = new Date(dateStr)
172           return dateStr
173         },
174 
175             }
176         })
177     script>
178 body>
179 html>

 

指令综合运用-品牌案例.html

标签:ros   pat   get   contain   indexof   include   括号   ase   methods   

原文地址:https://www.cnblogs.com/yangyunhao/p/12562444.html


评论


亲,登录后才可以留言!