詳解Vue自定義過(guò)濾器的實(shí)現(xiàn)
一 自定義過(guò)濾器(注冊(cè)在Vue全局)
注意事項(xiàng):
(1)全局方法 Vue.filter() 注冊(cè)一個(gè)自定義過(guò)濾器,必須放在Vue實(shí)例化前面
(2) 過(guò)濾器函數(shù)始終以表達(dá)式的值作為第一個(gè)參數(shù)。帶引號(hào)的參數(shù)視為字符串,而不帶引號(hào)的參數(shù)按表達(dá)式計(jì)算
(3)可以設(shè)置兩個(gè)過(guò)濾器參數(shù),前提是這兩個(gè)過(guò)濾器處理的不沖突
(4)用戶從input輸入的數(shù)據(jù)在回傳到model之前也可以先處理
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>vue自定義過(guò)濾器</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> <!--過(guò)濾器函數(shù)始終以表達(dá)式的值作為第一個(gè)參數(shù)。帶引號(hào)的參數(shù)視為字符串,而不帶引號(hào)的參數(shù)按表達(dá)式計(jì)算。-->
<p>{{message | sum | currency }}</p> <!--添加兩個(gè)過(guò)濾器,注意不要沖突-->
<input type="text" v-model="message | change"> <!--用戶從input輸入的數(shù)據(jù)在回傳到model之前也可以先處理-->
</div>
<script type="text/javascript">
// -----------------------------------------華麗分割線(從model->view)---------------------------------------
Vue.filter("sum", function(value) { //全局方法 Vue.filter() 注冊(cè)一個(gè)自定義過(guò)濾器,必須放在Vue實(shí)例化前面
return value + 4;
});
Vue.filter('cal', function (value, begin, xing) { //全局方法 Vue.filter() 注冊(cè)一個(gè)自定義過(guò)濾器,必須放在Vue實(shí)例化前面
return value + begin + xing;
});
// -----------------------------------------華麗分割線(從view->model)---------------------------------------
Vue.filter("change", {
read: function (value) { // model -> view 在更新 `<input>` 元素之前格式化值
return value;
},
write: function (newVal,oldVal) { // view -> model 在寫(xiě)回?cái)?shù)據(jù)之前格式化值
console.log("newVal:"+newVal);
console.log("oldVal:"+oldVal);
return newVal;
}
});
var myVue = new Vue({
el: ".test",
data: {
message:12
}
});
</script>
</body>
</html>
二 自定義過(guò)濾器(注冊(cè)在實(shí)例化內(nèi)部)
上面的例子直接注冊(cè)在Vue全局上面,其他不用這個(gè)過(guò)濾器的實(shí)例也會(huì)被迫接受,其實(shí)過(guò)濾器可以注冊(cè)在實(shí)例內(nèi)部,僅在使用它的實(shí)例里面注冊(cè)
上面的程序改寫(xiě)為:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>vue自定義過(guò)濾器</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> <!--過(guò)濾器函數(shù)始終以表達(dá)式的值作為第一個(gè)參數(shù)。帶引號(hào)的參數(shù)視為字符串,而不帶引號(hào)的參數(shù)按表達(dá)式計(jì)算。-->
<p>{{message | sum | currency }}</p> <!--添加兩個(gè)過(guò)濾器,注意不要沖突-->
<input type="text" v-model="message | change"> <!--用戶從input輸入的數(shù)據(jù)在回傳到model之前也可以先處理-->
</div>
<script type="text/javascript">
Vue.filter("change", {
read: function (value) { // model -> view 在更新 `<input>` 元素之前格式化值
return value;
},
write: function (newVal,oldVal) { // view -> model 在寫(xiě)回?cái)?shù)據(jù)之前格式化值
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>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
antdv的table因數(shù)據(jù)量過(guò)大導(dǎo)致的卡頓問(wèn)題及解決
這篇文章主要介紹了antdv的table因數(shù)據(jù)量過(guò)大導(dǎo)致的卡頓問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
Vue引用vee-validate插件表單驗(yàn)證問(wèn)題(cdn方式引用)
這篇文章主要介紹了Vue引用vee-validate插件表單驗(yàn)證問(wèn)題(cdn方式引用),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
Vuex持久化存儲(chǔ)之vuex-persist問(wèn)題
這篇文章主要介紹了Vuex持久化存儲(chǔ)之vuex-persist問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
vue實(shí)現(xiàn)移動(dòng)端原生小球滑塊
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)移動(dòng)端原生小球滑塊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
在vue2.x里面簡(jiǎn)單使用socketio問(wèn)題
這篇文章主要介紹了在vue2.x里面簡(jiǎn)單使用socketio問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10
詳解Vue如何使用xlsx庫(kù)導(dǎo)出Excel文件
第三方庫(kù)xlsx提供了強(qiáng)大的功能來(lái)處理Excel文件,它可以簡(jiǎn)化導(dǎo)出Excel文件這個(gè)過(guò)程,本文將為大家詳細(xì)介紹一下它的具體使用,需要的小伙伴可以了解下2025-01-01
vue跳轉(zhuǎn)方式的常見(jiàn)方式以及區(qū)別分析
在Vue.js中頁(yè)面跳轉(zhuǎn)是前端開(kāi)發(fā)中常見(jiàn)的需求,Vue提供了多種頁(yè)面跳轉(zhuǎn)方式,這篇文章主要給大家介紹了關(guān)于vue跳轉(zhuǎn)方式的常見(jiàn)方式以及區(qū)別分析的相關(guān)資料,需要的朋友可以參考下2024-02-02
用vscode開(kāi)發(fā)vue應(yīng)用的方法步驟
這篇文章主要介紹了用vscode開(kāi)發(fā)vue應(yīng)用的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05

