02-Vueのイベント改質剤、フィルター、およびライフサイクル機能

IV。イベント修飾子

4.1 .stop

ストップバブリング

htmlコード:

<style>
    .heade{
        height: 150px;
        background:red ;
    }
</style>
<div id="app">
    <div class="heade" @click="divHeader">
        <!-- 使用.stop 阻止冒泡 -->
        <input type="button" value="按钮" @click.stop="butHeader" />
    </div>      
</div>

VUEコード:

var vm =new Vue({
    el:'#app',
    data:{},
    methods:{
    divHeader() {
        console.log("div");
  },
    butHeader() {
        console.log("but")
    }
   }
})

4.2 .prevent

デフォルトの動作を妨げます

htmlコード:

<div id="app">
    <a href="www.baidu.com" @click.prevent="linkclick">点击一下,我不想去百度</a>      
</div>

VUEコード:

var vm =new Vue({
    el:'#app',
    data:{},
    methods:{
      linkclick() {
        console.log("不去百度,留在页面");
     }
   }
})

4.3 .capture

キャプチャ・トリガイベントを達成

htmlコード:

<style>
    .heade{
        height: 150px;
        background:red ;
}
</style>
<div id="app">
    <div class="heade" @click.capture="divHeader">
        <input type="button" value="按钮" @click="butHeader" />
    </div>      
</div>

VUEコード:

var vm =new Vue({
    el:'#app',
    data:{},
    methods:{
    divHeader() {
        console.log("div");
  },
    butHeader() {
        console.log("but")
    }
   }
})

4.4 .self

イベント・ハンドラをトリガする現在の要素を実現するためにのみ
だけその泡立ちの振る舞いを防ぐことができます、それは、バブリングの他の行為を防ぐことはできません。

htmlコード:

<style>
    .heade{
        height: 150px;
        background:red ;
}
</style>
<div id="app">
    <div class="heade" @click.self="divHeader">
        <input type="button" value="按钮" @click="butHeader" />
    </div>      
</div>

VUEコード:

var vm =new Vue({
    el:'#app',
    data:{},
    methods:{
    divHeader() {
        console.log("div");
  },
    butHeader() {
        console.log("but")
    }
   }
})

4.5 .once

一回だけトリガー
htmlコード:

<div id="app">
    <a href="www.baidu.com" @click.once="linkclick">点击一下,我不想去百度</a>     
</div>

VUEコード:

var vm =new Vue({
    el:'#app',
    data:{},
    methods:{
      linkclick() {
        console.log("啊啊啊啊,只能不去一次");
     }
   }
})

4.5カスタムキー修飾

Vue.config.keyCodes。タイトルキー=値

 Vue.config.keyCodes.f2=113

V.フィルター

共通のフォーマットテキストとして使用することができ
、フィルタは、2つの場所で使用することができます:口ひげとvバインド表現補間
フィルタを複数回呼び出すことができ

htmlコード:

<div id="app">
    <p>{{msg | MsgFormat('疯狂','123') | testFormat }}</p>
</div>

VUEコード:

Vue.filter('MsgFormat',function(msg,arg,arg2){
            //字符串的  replace 方法第一个参数可以写字符串 也可以写正则表达式
            return msg.replace(/好/g,arg+arg2)
        })
        //可以多次调用过滤器
        Vue.filter('testFormat',function(msg){
            return msg+'==========='
        })
        
        var vm = new Vue({
            el: "#app",
            data: {
                msg:'你好我好大家好'
            },
            methods: {}
})

{{名前|名前}}と呼ばれる==フィルタフォーマット==フィルタ

グローバルフィルタ5.1を定義します

単純なケースによる---時刻形式

スルーフィルタVue.filter()フィルタを定義

htmlコード:

<div id="app">
    <div class="container">
                <div class="row">
                    <div class="span12">
                        <table class="table table-hover">
                            <thead>
                                <tr>
                                    <th>
                                        id
                                    </th>
                                    <th>
                                        name
                                    </th>
                                    <th>
                                        createtime
                                    </th>
                                    <th>
                                        操作
                                    </th>
                                </tr>
                            </thead>
                            <tbody v-for="item in list " :key='item.id'>
                                <!-- 自定义一个方法  将关键字 作为参数传递到方法里-->
                             <td>{{item.id}}</td>
                             <td>{{item.name}}</td>
                             <td>{{item.createtime  | dateFormat}}</td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </div>
    </div>
</div>

VUEコード:

var vm = new Vue({
            el: "#app",
            data: {
                list: [{
                        id: 1,
                        name: '宝马',
                        info: '很好',
                        createtime:new Date()
                    },
                    {
                        id: 2,
                        name: 'LV',
                        info: '很贵',
                        createtime:new Date()
                    }
                ]
            },
            methods: {}
        })

フィルタ
パラメータ:「DATEFORMAT」:フィルター名
パラメータII:メソッドは、多くのパラメータ持つことができます
  が、最初のフィルタパラメータは常にパイプ記号- > |「」を介して送信されるデータを、先行します

Vue.filter('dateFormat',function(dateString,patter=""){//patter一定要传值  
            // 根据指定的字符串得到特定的时间
            var dt=new Date(dateString)
            // padStart() 字符串在前面填充
            //yyyy-mm-dd 获取年月日 时分秒
            var y=dt.getFullYear()
            var m=(dt.getMonth()+1).toString().padStart(2,'0')
            var d=dt.getDate().toString().padStart(2,'0')
            var h=dt.getHours().toString().padStart(2,'0')
            var mm=dt.getMinutes().toString().padStart(2,'0')
            var ss=dt.getSeconds().toString().padStart(2,'0')
            //toLowerCase():将 所有英文字母转换为小写
            if(patter && patter.toLowerCase() == 'yyyy-mm-dd'){
                return y+'-'+m+'-'+d
            }else{
                return y+'-'+m+'-'+d+' '+h+':'+mm+':'+ss
    }
})

5.2カスタムフィルタプライベート

プライベートローカルフィルタは、現在のVMオブジェクト表示制御の領域のみを使用することができます

htmlコード:

<div id="app"></div>
<div id="app2">
    <p v-color="'red'" >{{dt | dateFormat}}</p>
</div>

VUEコード:

var vm2=new Vue({
            el:'#app2',
            data:{
                dt:new Date()
            },
            //定义一个 私有过滤器     私有过滤器都具有[过滤器名称]和[处理函数]
            //过滤器 采用就近原则
            filters:{
                dateFormat:function(dt,patter=""){
                    // 根据指定的字符串得到特定的时间
                    var dt=new Date(dt)
                    //yyyy-mm-dd 获取年月日 时分秒
                    var y=dt.getFullYear()
                    var m=dt.getMonth()+1
                    var d=dt.getDate()
                    var h=dt.getHours()
                    var mm=dt.getMinutes()
                    var ss=dt.getSeconds()
                    //toLowerCase():将 所有英文字母转换为小写
                    if(patter && patter.toLowerCase() == 'yyyy-mm-dd'){
                        return y+'-'+m+'-'+d
                    }else{
                        return y+'-'+m+'-'+d+' '+h+':'+mm+':'+ss
                    }
                }
            }
        })

VI。ライフサイクルメソッド

Vueのインスタンスから作成され、常に総称ライフサイクルと呼ばれる、イベント、各種を伴う、期間を破壊するために、実行します!

(ライフサイクルイベントである)== ==ライフサイクルフック=機能=ライフサイクルライフサイクルイベント
VUEライフサイクルチャート

6.1倍を作成するためのライフサイクル機能

6.1.1 beforeCreate()

ただ、インスタンスがメモリ内に作成され、この時点では、プロパティとメソッドを初期化する良いデータがありません

6.1.2作成しました()

OKインスタンスがメモリ内に作成された、データおよび方法は、[OK]を作成されているこの時間は、この時点ではまだテンプレートをコンパイルするために開始されていません

6.1.3 beforeMount()

この時点では、テンプレートをコンパイルされているが、ページに装着されていません

6.1.4)(マウント

この時点で、私たちは、ページ指定されたコンテナのディスプレイに取り付けられた、テンプレートをコンパイルしています

ライフサイクル機能は、6.2倍を実行します

6.2.1のBeforeUpdate()

この関数は、状態値のデータでは、この時間は、最新である、ステータス更新の前に行われますが、この時点ではまだ再レンダリングDOMノードに始まっていないので、データは、画面や古い上に表示されます

6.2.2更新()

この関数を呼び出した後、更新の例として、データは、データ状態での値とのインターフェイスに表示されている更新プログラムを完了した、インターフェイスは再レンダリング良いされています!

破壊時の6.3ライフサイクル機能

6.3.1 beforeDestroy()

破壊するインスタンスの前に呼び出されます。このステップでは、インスタンスは、まだ完全に利用可能です。

6.3.2破壊()

Vueのインスタンスを破壊した後に呼び出されます。呼び出しの後、すべてが非結合ます表示Vueのインスタンスを、すべてのイベントリスナーが削除され、すべての子インスタンスが破棄されます

おすすめ

転載: www.cnblogs.com/hardywen/p/12014854.html