1

我知道如何过滤 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。现在我如何根据手机号码进行过滤,因为它返回一个函数!!

4

1 回答 1

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
}
于 2016-12-25T08:38:39.847 回答