自定义vue过滤器及指令
vue自定义过滤器
学过angular的宝宝应该对过滤器并不陌生,首先先来说下angular自定义过滤器,他使用的是filter方法。传入两个参数,第一个是过滤器的名字,第二个回调函数。
同样的vue的自定义过滤器也是使用filter方法,通过Vue调用。使用方法也是通过|的形式。
1 2
| Vue.filter("name",callBack); <div>{{msg|name}}</div>
|
例如,创建一个date(年-月-日 时:分:秒)的过滤器
1 2 3 4 5 6 7 8 9 10 11
| Vue.filter("date",function(input){//input就是传过来的msg var oDate=new Date(input); return oDate.getFullYear()+"-"+(oDate.getMonth()+1)+"-"+oDate.getDate()+" "+oDate.getHours()+":"+oDate.getMinutes()+":"+oDate.getSeconds(); }); var vm=new Vue({ el:"body", a:Date.now();//时间戳 }); ------------------ //html部分 <div>{{a|date}}<div>
|
一个时间过滤器这么简单就创建成功了!如果有其他需求可以在回调函数里添加逻辑代码,变成符合要求的过滤器!
自定义指令
是的!和angular中一样自定义指令用的是directive方法,用法基本相同
1 2 3
| Vue.directive("name",callBack); //html部分 <div v-name></div>//注意这里name前面必须加v-,而自定义的时候不用加。
|
例如,自定义一个v-red指令,当使用这个指令时让该元素的背景颜色变为红色
1 2 3 4 5
| Vue.directive("red",function(){ this.el.style.background="red"; }) //html部分 <div v-red>我是一个div</div>
|
自定义v-red指令就成功了!
自定义元素指令
就是调用elementDirective方法,第一个参数是自定义的元素名字,第二个对象,和自定义指令稍有不同。
1 2 3 4 5 6 7
| Vue.elementDirective("name",{ bind:function(){ this.el.style.background="blue";//使用这个元素时,背景变为蓝色 } }) //html部分 <name>我是自定义元素中的内容</name>
|
如果行自定义带有某功能的元素,可以这样做哦!