2014-10-05 62 views
0

我想使用重複項目原型上定義的函數來過濾ng-repeat,但是我找不到任何參考,指出這是否實際可行。類似於AngularJS通過對象原型函數進行過濾

<div ng-repeat="user in users | filter:{'isAdmin()': true} | orderBy:'getFullName()'"> 
    {{user.getFullName()}} 
</div> 

其中isAdmin返回布爾值。 orderBy適用於這種表示法,但過濾器似乎不適用於我嘗試的任何表示法。如果沒有單獨的函數來檢查isAdmin(),有什麼辦法可以實現嗎?

+0

寫自定義過濾器 – Lrrr 2014-10-05 12:11:00

回答

1

你可以調用在控制器中定義的函數:

$scope.isAdmin = function(x) { 
    if (x.name == 'bob') { 
     return true; 
    } 
} 

函數必須返回true或false。

,並在你的HTML中使用它:

<div ng-repeat="user in users | filter:isAdmin | orderBy:'getFullName()'"> 
    {{user.getFullName()}} 
</div> 

創建custome filter,例如:

app.filter('isAdmin', [function() { 
    return function(users) { 
     var filtered = []; 
     for (var i = 0; i < users.length; i++) { 
     var user = users[i]; 

     //here you can use what ever function you want to check if user is admin 
     if (user.name == 'bob') { 
      filtered.push(user); 
     } 
     } 
     return filtered; 
    }; 
    } 
]); 

,並用它在你的HTML像這樣:

<div ng-repeat="user in users | isAdmin | orderBy:'getFullName()'"> 
    {{user.getFullName()}} 
</div> 

這裏是一個plnkr