vue2 - 局部过滤器 全局过滤器,自定义局部指令 自定义全局指令
1.过滤器 局部过滤器
<!--使用一个过滤器,单个参数-->
<div>{{"levi" | filterTest1}}</div>
<!--使用一个过滤器,多个参数-->
<input type="text" v-bind:value="'levi' | filterTest2('ackerman')">
<!--使用多个滤器-->
<input type="text" v-bind:value="'levi' | filterTest2('ackerman') | filterTest1">
filters: {
filterTest1(args){
return args.toUpperCase();
},
filterTest2(args1,args2){
return args1.toUpperCase()+args2.toLowerCase();
}
}
2.全局过滤器
定义在script标签中
//全局过滤器 Vue.filter('mySlice',function(value){ return value.slice(0,4) })
3.自定义指令
指令定义时不加v-,但使用时要加v-
指令名如果是多个单词,要使用kebab-case命名方式,不要用camelCase命名
注意:指令中的this是window
函数式:定义一个v-big指令,和v-text功能类似,但会把绑定的数值放大10倍
<div id="root">
<li>{{num}}</li>
<!--num*10-->
<li v-big="num"></li>
</div>
<script>
const vm=new Vue({
el: "#root",
data: {
num: 10
},
directives: {
//big函数何时会被调用?
//1.指令与元素成功绑定时(一上来)
//2.指令所在的模板被重新解析时。
big(element,binding){
console.log(binding);
element.innerText=binding.value*10;
}
}
})
</script>
对象式:定义一个v-fours-bind指令,和v-bind功能类似,但可以让其所绑定的input元素默认获取焦点
<div id="root"> 输入:<button @click="num++">num++</button> 输出:<input type="text" v-focus-bind:value="num"> </div> <script> const vm=new Vue({ el: "#root", data: { num: 10 }, directives: { focusBind: { //指令与元素成功绑定时(一上来) bind(element,binding){ element.value=binding.value; }, //指令所在元素被插入页面时 inserted(element,binding){ element.focus(); }, //指令所在的模板被重新解析时 update(element,binding){ element.value=binding.value; } } } }) </script>
全局指令:整个vue项目都可以使用
<script> Vue.directive('focusBind',{ //指令与元素成功绑定时(一上来) bind(element,binding){ }, //指令所在元素被插入页面时 inserted(element,binding){ }, //指令所在的模板被重新解析时 update(element,binding){ } }) </script>
posted on 2023-02-17 12:38 Mikasa-Ackerman 阅读(170) 评论(0) 收藏 举报
浙公网安备 33010602011771号