一 自定義過濾器(注冊在Vue全局)
注意事項:
(1)全局方法 Vue.filter() 注冊一個自定義過濾器,必須放在Vue實例化前面
(2) 過濾器函數始終以表達式的值作為第一個參數。帶引號的參數視為字符串,而不帶引號的參數按表達式計算
(3)可以設置兩個過濾器參數,前提是這兩個過濾器處理的不沖突
(4)用戶從input輸入的數據在回傳到model之前也可以先處理
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>vue自定義過濾器</title> <script src="../js/vue.js" type="text/javascript" charset="utf-8"></script> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> </head> <body> <div class="test"> <p>{{message | sum}}</p> <p>{{message | cal 10 20}}</p> <!--過濾器函數始終以表達式的值作為第一個參數。帶引號的參數視為字符串,而不帶引號的參數按表達式計算。--> <p>{{message | sum | currency }}</p> <!--添加兩個過濾器,注意不要沖突--> <input type="text" v-model="message | change"> <!--用戶從input輸入的數據在回傳到model之前也可以先處理--> </div> <script type="text/javascript"> // -----------------------------------------華麗分割線(從model->view)--------------------------------------- Vue.filter("sum", function(value) { //全局方法 Vue.filter() 注冊一個自定義過濾器,必須放在Vue實例化前面 return value + 4; }); Vue.filter('cal', function (value, begin, xing) { //全局方法 Vue.filter() 注冊一個自定義過濾器,必須放在Vue實例化前面 return value + begin + xing; });// -----------------------------------------華麗分割線(從view->model)--------------------------------------- Vue.filter("change", { read: function (value) { // model -> view 在更新 `<input>` 元素之前格式化值 return value; }, write: function (newVal,oldVal) { // view -> model 在寫回數據之前格式化值 console.log("newVal:"+newVal); console.log("oldVal:"+oldVal); return newVal; } }); var myVue = new Vue({ el: ".test", data: { message:12 } }); </script> </body></html>
二 自定義過濾器(注冊在實例化內部)
上面的例子直接注冊在Vue全局上面,其他不用這個過濾器的實例也會被迫接受,其實過濾器可以注冊在實例內部,僅在使用它的實例里面注冊
上面的程序改寫為:
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>vue自定義過濾器</title> <script src="../js/vue.js" type="text/javascript" charset="utf-8"></script> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /> </head> <body> <div class="test"> <p>{{message | sum}}</p> <p>{{message | cal 10 20}}</p> <!--過濾器函數始終以表達式的值作為第一個參數。帶引號的參數視為字符串,而不帶引號的參數按表達式計算。--> <p>{{message | sum | currency }}</p> <!--添加兩個過濾器,注意不要沖突--> <input type="text" v-model="message | change"> <!--用戶從input輸入的數據在回傳到model之前也可以先處理--> </div> <script type="text/javascript"> Vue.filter("change", { read: function (value) { // model -> view 在更新 `<input>` 元素之前格式化值 return value; }, write: function (newVal,oldVal) { // view -> model 在寫回數據之前格式化值 console.log("newVal:"+newVal); console.log("oldVal:"+oldVal); return newVal; } }); var myVue = new Vue({ el: ".test", data: { message:12 }, filters: { sum: function (value) { return value + 4; }, cal: function (value, begin, xing) { return value + begin + xing; } } }); </script> </body></html>
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答