Polymer 过滤dom重复';s元素,其中值由函数生成

Polymer 过滤dom重复';s元素,其中值由函数生成,polymer,polymer-1.0,dom-repeat,Polymer,Polymer 1.0,Dom Repeat,我知道如何过滤dom repeat的列表,但如果dom repeat的值是由函数生成的,那么这些值就不会出现在属性中。因此,在_computeFilter函数中,我不能使用任何子属性来匹配过滤器 <template is="dom-repeat" items="{{membersList}}" as="usersList" filter="{{_computeFilter(searchUser)}}"> <div class="name"> [[_getFull

我知道如何过滤dom repeat的列表,但如果dom repeat的值是由函数生成的,那么这些值就不会出现在属性中。因此,在_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>

[[u getFullName(usersList.firstName,usersList.lastName)]]
[[u getMobileNumber(usersList.fields)]]

在上面的_getMobileNumber函数代码中,我传递了一个数组,然后在该数组中我将搜索一个手机号码,然后我将返回dom-repeat。现在我如何根据手机号码进行筛选,因为它是由函数返回的

我可以想出三种选择:

1) 修改memberList的元素,添加fullName和mobileNumber属性

this.memberList.forEach(userList => {
  userList.fullName = this._getFullName(usersList.firstName,usersList.lastName);
  userList.mobileNumber = this._getMobileNumber(usersList.fields);
}
  this.newList = this.memberList.map(userList => {
   return {
     userList: userList,
     fullName: this._getFullName(usersList.firstName,usersList.lastName),
     mobileNumber: this._getMobileNumber(usersList.fields)
   }
}
2) 创建一个包含新对象的新列表

a) 是旧对象的副本,具有新属性

this.memberList.forEach(userList => {
  userList.fullName = this._getFullName(usersList.firstName,usersList.lastName);
  userList.mobileNumber = this._getMobileNumber(usersList.fields);
}
  this.newList = this.memberList.map(userList => {
   return {
     userList: userList,
     fullName: this._getFullName(usersList.firstName,usersList.lastName),
     mobileNumber: this._getMobileNumber(usersList.fields)
   }
}
b) 是围绕旧对象以及新属性的包装器

this.memberList.forEach(userList => {
  userList.fullName = this._getFullName(usersList.firstName,usersList.lastName);
  userList.mobileNumber = this._getMobileNumber(usersList.fields);
}
  this.newList = this.memberList.map(userList => {
   return {
     userList: userList,
     fullName: this._getFullName(usersList.firstName,usersList.lastName),
     mobileNumber: this._getMobileNumber(usersList.fields)
   }
}
3) 只需在filter函数中使用方法_getMobileNumber

_computeFilter: function(item) {
  return this._getMobileNumber(item.fields) == SOMETHING
}

我可以想出三个选择:

1) 修改memberList的元素,添加fullName和mobileNumber属性

this.memberList.forEach(userList => {
  userList.fullName = this._getFullName(usersList.firstName,usersList.lastName);
  userList.mobileNumber = this._getMobileNumber(usersList.fields);
}
  this.newList = this.memberList.map(userList => {
   return {
     userList: userList,
     fullName: this._getFullName(usersList.firstName,usersList.lastName),
     mobileNumber: this._getMobileNumber(usersList.fields)
   }
}
2) 创建一个包含新对象的新列表

a) 是旧对象的副本,具有新属性

this.memberList.forEach(userList => {
  userList.fullName = this._getFullName(usersList.firstName,usersList.lastName);
  userList.mobileNumber = this._getMobileNumber(usersList.fields);
}
  this.newList = this.memberList.map(userList => {
   return {
     userList: userList,
     fullName: this._getFullName(usersList.firstName,usersList.lastName),
     mobileNumber: this._getMobileNumber(usersList.fields)
   }
}
b) 是围绕旧对象以及新属性的包装器

this.memberList.forEach(userList => {
  userList.fullName = this._getFullName(usersList.firstName,usersList.lastName);
  userList.mobileNumber = this._getMobileNumber(usersList.fields);
}
  this.newList = this.memberList.map(userList => {
   return {
     userList: userList,
     fullName: this._getFullName(usersList.firstName,usersList.lastName),
     mobileNumber: this._getMobileNumber(usersList.fields)
   }
}
3) 只需在filter函数中使用方法_getMobileNumber

_computeFilter: function(item) {
  return this._getMobileNumber(item.fields) == SOMETHING
}