我知道如何过滤dom-repeat的列表,但是如果dom-repeat的值是由函数生成的那么这些值不存在于properties.so中_computeFilter函数我可以'使用任何子属性来匹配过滤器。
<template is="dom-repeat" items="{{membersList}}" as="usersList" filter="{{_computeFilter(searchUser)}}">
<div class="name">
[[_getFullName(usersList.firstName,usersList.lastName)]]
</div>
<div>
[[_getMobileNumber(usersList.fields)]]</div>
</template>
在_getMobileNumber函数中的上述代码中,我传递一个数组,然后在该数组中,我将搜索一个手机号码,然后我将返回dom-repeat。现在我怎么能基于手机号码的过滤器,因为它由函数返回!!
答案 0 :(得分:0)
我可以想到三个选择:
1)改变memberList的元素,添加fullName和mobileNumber属性
this.memberList.forEach(userList => {
userList.fullName = this._getFullName(usersList.firstName,usersList.lastName);
userList.mobileNumber = this._getMobileNumber(usersList.fields);
}
2)使用新对象创建一个新列表
a)是旧对象的副本,具有新属性
b)是旧对象的包装器,加上新属性
this.newList = this.memberList.map(userList => {
return {
userList: userList,
fullName: this._getFullName(usersList.firstName,usersList.lastName),
mobileNumber: this._getMobileNumber(usersList.fields)
}
}
3)只需在过滤函数
中使用方法_getMobileNumber_computeFilter: function(item) {
return this._getMobileNumber(item.fields) == SOMETHING
}