2012-08-12 66 views
19

Tôi có một mảng (_users) chứa các đối tượng JSON.Làm cách nào để lọc JSON-Data bằng AngularJs?

{ 
    "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" 
      } 
     ] 
     } 
    ] 
    } 
} 

1- Làm thế nào tôi có thể lọc chỉ cho người dùng với "hoạt động": "1" không "0"

Tôi đã thử một cái gì đó như thế này:

<div ng-repeat="user in _users | filter:active | orderBy:user.userid"> 
    {{user.userid}} 
</div> 

nhưng không hoạt động chính xác cho tôi.

Cảm ơn bạn!

Trả lời

38

Kể từ khi mô hình đối tượng của bạn là loại phức tạp tôi sẽ khuyên bạn sử dụng chức năng lọc tùy chỉnh:

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

và sau đó trong HTML của bạn:

<div ng-repeat="user in _users | filter:isActive"> 
    {{user.User.userid}} 
</div> 

Đây là jsFiddle làm việc: http://jsfiddle.net/pkozlowski_opensource/4kzzy/3/

Hãy chắc chắn kiểm tra tài liệu của góc trên bộ lọc nếu bạn cần thêm thông tin: http://docs.angularjs.org/api/ng.filter:filter

+1

này hoạt động hoàn hảo. Cảm ơn bạn! –

+2

Trả lời ở trên là hoàn hảo nhưng FYI, nếu bạn muốn lọc mảng của mình trước khi liên kết với phạm vi, bạn cũng có thể sử dụng jQuery.grep() hoặc _filter từ underscore.js http://jsfiddle.net/NRuM7/1/ - jQuery.Grep() http://documentcloud.github.com/underscore/#filter - underscore.js – GFoley83

3

Taking @ pkozlowski.opensource một chút nữa và cho phép lọc trực tiếp các mặt hàng/người dùng:

http://jsfiddle.net/hbyNN/

<div ng-controller="MyCtrl"> 
    <label>userid substring filter:</label> 
    <input ng-model="zzzzz"> 

    <div ng-repeat="user in _users | filter:isInteresting"> 
     <pre>{{user | json}}</pre> 
    </div> 
</div> 

Và:

$scope.isInteresting = function (user) { 
    if ($scope.zzzzz == undefined) { 
     return true; 
    } 

    return user.userid.indexOf($scope.zzzzz) !== -1; 
}; 
Các vấn đề liên quan