过滤dom-repeat元素,其中值由函数生成

时间:2016-12-24 12:14:39

标签: polymer polymer-1.0 dom-repeat

我知道如何过滤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。现在我怎么能基于手机号码的过滤器,因为它由函数返回!!

1 个答案:

答案 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
}