Вопрос по json, angularjs, javascript, frameworks – Как фильтровать JSON-данные с помощью AngularJs?

19

У меня есть массив (_users), который содержит объекты JSON.

{ 
  "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- Как отфильтровать только пользователей с "активным": "1" не & quot; 0 & quot;

Я пробовал что-то вроде этого:

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

но не работает правильно для меня.

Спасибо!

Ваш Ответ

2   ответа
38

я бы рекомендовал использовать пользовательскую функцию фильтрации:

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

а затем в вашем HTML:

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

Вот рабочий jsFiddle:http://jsfiddle.net/pkozlowski_opensource/4kzzy/3/

Обязательно проверьте угловую документацию по фильтрам, если вам нужна дополнительная информация:http://docs.angularjs.org/api/ng.filter:filter

Это работает отлично. Благодарю вас! Vural Acar
Ответ выше идеален, но, к вашему сведению, если вы хотите отфильтровать массив перед привязкой к области, вы также можете использовать jQuery.grep () или _filter из underscore.jsjsfiddle.net/NRuM7/1 - jQuery.Grep ()documentcloud.github.com/underscore/#filter - underscore.js
5

ю элементов / пользователей:

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>

А также:

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

    return user.userid.indexOf($scope.zzzzz) !== -1;
};

Похожие вопросы