1. 程式人生 > >前端框架開始學習Vue(二)

前端框架開始學習Vue(二)

1 根據關鍵字實現陣列的過濾

 

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <link rel="stylesheet" type="text/css" href="css3.3.7/bootstrap.css"/>
    </head>
    <script src="vue.js"></script>
<body> <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 for=""> id: <input type="text" class="form-control" v-model="id"/> </label> <label for=""> name: <input type="text" v-model="name" /> </
label> <!--在Vue中,使用事件繫結機制,為元素指定處理函式, 如果加了小括號,就可以傳參 --> <input type="button" value="新增" class="btn-primary" @click="add()"/> <input type="text" v-model="keyword"/> </div> </div> <table border="" cellspacing="" cellpadding="" class="table table-bordered table-hover table-striped"> <thead> <tr><th>id</th> <th>name</th> <th>time</th> <th>operation</th> </tr> </thead> <tbody> <!--之前 v-for中的資料,都是直接從data上的list中直接渲染的--> <!--現在,我們自定義serarch方法,通過傳參形式傳遞給serarch--> <!--在serarch方法內部通過執行for 迴圈,把符合的返回--> <tr v-for="item in serarch(keyword)" :key="item.id"> <td>{{item.id}}</td> <td v-text="item.name"></td> <td>{{item.ctime}}</td> <td><a href="" @click.prevent="dele(item.id)">刪除</a></td> </tr> </tbody> </table> </div> <script type="text/javascript"> var vm=new Vue({ el:'#app', data:{ id:'', name:'', keyword:"", list:[ {id:1,name:'灰濛濛1',ctime:new Date()}, {id:2,name:'',ctime:new Date()}, ] }, methods:{ add(){ this.list.push({id:this.id,name:this.name, ctime:new Date()}) this.id=this.name='' }, dele(id){//根據id 找到並刪除資料 // this.list.some((item,i)=>{ // this.list.splice(i,1) // if(item.id==id){return true} // } // ) var index= this.list.findIndex(item=>{ if(item.id==id){ return true } }) this.list.splice(index,1) }, serarch(keyword){ // var newList=[] // this.list.forEach(item=>{ // if(item.name.indexOf(keyword)!=-1){ // newList.push(item) // } // // }) // return newList // 注意:forEach some filter findIndex這些都屬於陣列的新方法 // 都會對陣列的每次進行遍歷執行相關的操作 return this.list.filter(item=>{ // 注意:Es6中,為字串提供了一個新方法,叫做 // String:prototype.includes('要包含的字串') // 如果包含,則返回 true,反之 if(item.name.includes(keyword)){ return item } }) } } }) </script> </body> </html>
View Code--篩選過濾  

2 全域性過濾器使用

            // 過濾器定義語法
            // Vue.filter('過濾器名',function(){})
            // 過濾器中的function,第一個引數,已經被規定死了,
            //  永遠都是過濾器管道符傳遞過來的資料
             Vue.filter('過濾器名',function(data){
                 return data+'123'
             })
        </script>
    </body>
</html>
<!--過濾器呼叫時候的格式  {{name | 過濾器名}}-->
View Code--過濾器定義
    <body>
        <div id="app">
            <p>{{msg | msgFormat('瘋狂')}}</p>
        </div>
        
        <script type="text/javascript">
            Vue.filter('msgFormat',function(data,arg){
                // 字串的 replace 方法,第一個引數,除了可寫一個字元之外,
                // 還可以定義一個正則
                return data.replace(/單純/g,arg)
            })
            
            var vm=new Vue({
                el:"#app",
                data:{
                    msg:'曾經,我也是一個單純的少年,單純的我也一直很單純'
                }
            })
        </script>
    </body>
View Code--傳參過濾器定義

自定義私有過濾器

  呼叫的時候,採用的是就近原則,如果私有過濾器和全域性過濾器名稱一致,

  優先呼叫私有過濾器


 


3 Es6 方法 padStart 方法

 

var m =(dt.getMonth()+1).toString().padStart(2,'0')


4 按鍵修飾符(按鍵事件)

參考官方文件 https://cn.vuejs.org/v2/guide/events#%E6%8C%89%E9%94%AE%E4%BF%AE%E9%A5%B0%E7%AC%A6

  

也可以輸入鍵碼值 @keyup.113="add"