如何使用AngularJs过滤JSON数据?

Vur*_*ral 19 javascript json frameworks angularjs

我有一个包含JSON对象的数组(_users).

{ 
  "User":
  {
    "userid":"19571",
    "status":"7",
    "active":"1",
    "lastlogin":"1339759025307",
    "Stats":
     [
       {
         "active":"1",
         "catid":"10918",
         "typeid":"71",
         "Credits":
         [
           {
             "content":"917,65",
             "active":"1",
             "type":"C7"
           },               
           {
             "content":"125,65",
             "active":"1",
             "type":"B2"
           }
         ]
       }
     ]
  }
}
Run Code Online (Sandbox Code Playgroud)

1-如何仅过滤"有效"的用户:"1"不是"0"

我尝试过这样的事情:

<div ng-repeat="user in _users | filter:active | orderBy:user.userid">
    {{user.userid}}
</div>
Run Code Online (Sandbox Code Playgroud)

但对我来说工作不正常.

谢谢!

pko*_*rce 39

由于您的对象模型有点复杂,我建议使用自定义过滤功能:

$scope.isActive = function(user) {
    return user.User.Stats[0].active === "1";
};
Run Code Online (Sandbox Code Playgroud)

然后在你的HTML中:

<div ng-repeat="user in _users | filter:isActive">
    {{user.User.userid}}
</div>
Run Code Online (Sandbox Code Playgroud)

这是工作的jsFiddle:http://jsfiddle.net/pkozlowski_opensource/4kzzy/3/

如果您需要更多信息,请务必检查过滤器上的角度文档:http://docs.angularjs.org/api/ng.filter:filter

  • 上面的答案是完美的,但是如果你想在绑定到范围之前过滤你的数组,你也可以使用jQuery.grep()或来自underscore.js的_filter http://jsfiddle.net/NRuM7/1/-jQuery. Grep()http://documentcloud.github.com/underscore/#filter - underscore.js (2认同)