欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用vue简单的实现商品的添加删除以及搜索

程序员文章站 2022-05-15 13:39:44
...
  • 主要技术点:数组的几种的方法,以及利用过滤器完成搜索功能。

 主要代码如下:

html :

    <div id="app">
        <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:
                    <input type="text" class="form-control" v-model="name" @keyup.enter="add">
                    <!-- <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="search" class="form-control" v-model="keywords" v-focus>
                </label>
            </div>

        </div>

        <table class="table table-bordered table-hover tab table-striped">
            <thead>
                <tr>
                    <td>Id</td>
                    <td>Name</td>
                    <td>Ctime</td>
                    <td>Operation</td>
                </tr>
            </thead>
            <tbody>
               <tr v-for="item in search(keywords)" :key=item.id>
                   <td>{{item.id}}</td>
                   <td>{{item.name}}</td>
                   <td>{{item.ctime | dateFmate()}}</td>
                   <td>
                       <a href="" @click.prevent="del(item.id)">删除</a> 
                       <!-- 这时候要阻止默认行为,如果不阻止会刷新页面 -->
                   </td>
               </tr>
            </tbody>
        </table>
    
    </div>

 js:

    <script>

        //自定义全局按键修饰符
        //Vue.config.keyCodes.F2 = 113

        //定义一个使用Vue.directive() 定义全局的指令 获取焦点
        Vue.directive('focus',{
            inserted:function(el){
                el.focus()
            }
        })

        //定义一个全局过滤器
        Vue.filter('dateFmate',function(dateStr,pattern=''){
            var dt = new Date(dateStr)

            var y = dt.getFullYear()
            var m = (dt.getMonth() + 1).toString().padStart(2, '0')//字符串补全长度的功能
            var d = dt.getDate().toString().padStart(2, '0')


             //return `${y}-${m}-${d}`
            if(pattern.toLowerCase() === 'yyyy-mm-dd'){
                return `${y}-${m}-${d}`
            }else{
                var hh = dt.getHours()
                var mm = dt.getMinutes()
                var ss = dt.getSeconds()

                return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
            }
        })


        var vm = new Vue({
            el:'#app',
            data:{
                id:"",
                name:"",
                keywords:'',
                list:[
                    {id:1,name:'奔驰',ctime: new Date()},
                    {id:2,name:'宝马',ctime: new Date()},
                    {id:3,name:'保时捷',ctime: new Date()}
                ]
            },
            methods:{
                //增加方法
                add(){
                    var obj = {id:this.id,name:this.name,ctime:new Date()}
                    this.list.push(obj)
                    this.id=this.name=""   //表达式赋值为空,从右向左进行
                },
                //删除方法
                del(id){
                    //删除的两种方式


                    // this.list.some((item,i) => {
                    //     if(item.id == id){
                    //         this.list.splice(i,1)
                    //         // 在数组的some方法中,如果 return ture ,就会立即终止这个数组的后续循环
                    //         return true;
                    //     }
                    // })


                    var index = this.list.findIndex(item =>{
                        if(item.id == id){
                            return true;
                        }
                    })
                    //console.log(index);   findIndex是来查找索引的
                    
                    this.list.splice(index,1)
                },
                //自动搜索方法
                search(keywords){
                   // 第一种
                    var newlist = [];
                    this.list.forEach(item => {
                        if(item.name.indexOf(keywords) != -1){
                            newlist.push(item)
                        }
                    });
                    return newlist;

                    //第二种
                    /*
                    return this.list.filter(item => {
                        //if(item.name.indexOf(keywords) != -1){}
                        if(item.name.include(keywords)){
                            return item
                        }
                    })
                    */
                //    var newlist = this.list.filter(item => {
                //         //if(item.name.indexOf(keywords) != -1){}
                //         if(item.name.include(keywords)){
                //             return item
                //         }
                //     })
                //     return newlist;

                }
            }
        });




    </script>

 

相关标签: 数组的好处