MVVM过滤器
控制器是完成数据与DOM元素之间关联的组件,但是数据有时候格式并不能符合控制器的需求,需要进行格式化等操作才能使用,例如通过css修改背景图片,服务器返回的是一个图片地址,而css的background-image属性需要的是一个url(地址)字符串。因此为了简化这些数据的预处理操作,提高开发效率,框架提供了默认的数据过滤器来对数据进行处理,使其符合控制器的要求。例如
上图中,format即为一个过滤器,他通过url($1)和top数据属性进行组合,生成background-image属性需要的数据格式。
我们常用的过滤器有如下几种
1、format
format通过设定一个字符串模板,然后使用数据属性对其中的参数进行替换来完成字符串格式化。例如
format(“$1 or $2”,a,b)
2、all
all通过对包含的数据属性进行校验,只有所有属性都为true时,其才返回true否则为false。例如all(a,b,c,d,e)
其等价于
return a&&b&&c&&d&&e
3、any
any通过对包含的数据属性进行校验,只要有一个属性为true时,其就会返回true否则为false。例如any(a,b,c,d,e)
其等价于
return a||b||c||d||e
4、csv
csv通过对字符串数据属性进行拆分为数组与DOM对象进行关联,然后当DOM对象变化时,再把数组转换为字符串属性。等价于
DOM属性集合=数据属性.split(“,”);
数据属性=DOM属性集合.join();
5、length
length通过对数据属性的长度进行计算并进行返回,常与toggle控制器组合使用,例如当数组属性长度为0时不显示,不等于0时显示。
6、none
none通过对数组的值进行校验,如果没有一个为true时,返回true。
7、not
not是对数据取反,等价于
!数据属性。