2014-10-02 4 views
0

У меня есть этот объект json.Фильтр Angulajs на массиве объекта

var UsersList=[ 
    { 
     "User" : { 

      "IdUser" : "admin", 
      "FirstName" : "mirco", 
      "LastName" : "sabatino" 

     } 
    }, { 
     "User" : { 

      "IdUser" : "coordinator", 
      "FirstName" : "coordinator", 
      "LastName" : "" 

     } 
    }, { 
     "User" : { 

      "IdUser" : "test", 
      "FirstName" : "publisher", 
      "LastName" : "Diaz" 

     } 
    }, { 
     "User" : { 

      "IdUser" : "work", 
      "FirstName" : "ingester", 
      "LastName" : "Brown" 

     } 
    } 
    ] ; 

Я хочу фильтр в ng-repeat для значения LastName.

<div class="col-md-6" ng-repeat="users in UsersList | filter: {User.LastName : filterSearchLetter}"> 

значение filterSearchLetter в моем контроллере населен

$scope.filterLetterUser=function(letter){ 
     $scope.filterSearchLetter=letter; 
     console.log($scope.filterSearchLetter); 
    }; 

это не работает для меня. Вы можете мне помочь. С наилучшими пожеланиями

+0

как вы хотите получить «письмо» – sylwester

ответ

0

Это не является допустимым объектом: {User.LastName : filterSearchLetter} Он должен действительно бросить исключение сказать что-то вроде

Uncaught SyntaxError: Unexpected token . 

То, что вы, вероятно, хотите попробовать вместо этого: {"User": {"LastName" : filterSearchLetter} }

0

Чтобы перебрать массив объектов: angularjs - ng-repeat: access key and value from JSON array object

Возможно, вам придется преобразовать в действительный объект JS с использованием JS_Obj = JSON.parse (JSON_Obj);

Может быть что-то вроде этого:

//iterate through array 
<ul ng-repeat="users in UsersList"> 
    //iterate through Object 
    <li ng-repeat=(key, value) in users | filter: {User.LastName : filterSearchLetter}> 
    {{key}} : {{value}} 
    </li> 
</ul> 
1

Смотрите мой plnkr для решения http://plnkr.co/edit/l27xUQ?p=preview. Я также внедрил требуемое поведение пользовательского интерфейса, используя ng-change. Надеюсь, поможет.

Для детального объяснения я предлагаю вам блог Тодда Мотто в - http://toddmotto.com/everything-about-custom-filters-in-angular-js/

Для вызова фильтра, синтаксис имя функции фильтра следует параметры.

Чтобы определить фильтр, что нужно сделать (это копия коды Тодда Мотто в модифицированной для ваших данных)

todos.filter('startsWithLetter', function() { 
    return function (items, letter) { 
     var filtered = []; 
     var letterMatch = new RegExp(letter, 'i'); 
     for (var i = 0; i < items.length; i++) { 
      var item = items[i]; 
      if (letterMatch.test(item.User.LastName.substring(0, 1))) { 
       filtered.push(item); 
      } 
     } 
     return filtered; 
    }; 
}); 
+0

идеально это работа для меня. большое спасибо – user3790694

Смежные вопросы