rcp*_*p51 5 arrays filter angularjs ionic-framework
我尝试过滤一组带有数组的复选框:
<ion-checkbox ng-repeat="user in users | filter: {id: group.members}" ng-model="user.checked">{{user.info.name}}</ion-checkbox>
在哪里group.members是一个数组,user.id它只是没有显示任何东西.
用户数组:
[12345,123456]
group.members数组:
[12345]
我试图做到不显示了group.members在列表中users,因为在这种情况下,用户试图邀请其他user的group,为什么邀请某人谁的已经是会员?
我尝试创建自己的过滤器,但它只是一个烂摊子:
.filter('existingMembers', function() {
return function(users, members) {
return users.filter(function(user) {
for (var i in user.id) {
if (members.indexOf(user.id[i]) != -1) {
return;
}
}
return user;
});
};
})
Run Code Online (Sandbox Code Playgroud)
经过一番折腾,这就是解决方案。请参阅 plunkr了解工作示例。我认为这应该可以解决问题:
模板:
<ion-checkbox ng-repeat="user in users | filter: excludeMembers:group.members" ng-model="user.checked">{{user.info.name}}</ion-checkbox>
Run Code Online (Sandbox Code Playgroud)
角度过滤器:
app.filter('excludeMembers', function(){
return function(users, members){
return users.filter(function(user){
return members.indexOf(user.id) === -1;
});
}
})
Run Code Online (Sandbox Code Playgroud)
长解释
过滤器默认将您要过滤的数组作为第一个参数,然后使用冒号符号 (:) 您可以提供可选参数(在您的情况下):组。过滤器应该返回一个将运行的函数。返回值应该是一个过滤后的数组。我们还使用原生 JavaScript 过滤器函数(令人困惑,哇)来检查组数组。
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |