MVVM过滤器

控制器是完成数据与DOM元素之间关联的组件,但是数据有时候格式并不能符合控制器的需求,需要进行格式化等操作才能使用,例如通过css修改背景图片,服务器返回的是一个图片地址,而css的background-image属性需要的是一个url(地址)字符串。因此为了简化这些数据的预处理操作,提高开发效率,框架提供了默认的数据过滤器来对数据进行处理,使其符合控制器的要求。例如

MVVM过滤器 - 图1

上图中,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是对数据取反,等价于

!数据属性。