Вопрос

У меня есть массив следующего объекта JSON:

 { 
    fooBar:{ 
        Id: 2
        Foo:  { 
                Id: 4
                IsNew: false
              } 
         Bar: { 
                Id: 1
                IsNew: false
              }
           }
  }
.

И я хочу фильтровать на генеракодицетагкоде, поэтому на основе Это ответа Я ожидал работать на работу: .

<div data-ng-repeat="fooBar in fooBars | filter:{Foo:{Id : 4}}:true">
.

Но это не возвращает меня ничего.

Я могу сделать следующее, однако, чтобы фильтровать на foobar.id, и это работает нормально:

<div data-ng-repeat="fooBar in fooBars | filter:{Id : 2}:true">
.

Должен ли я писать пользовательские фильтры для такого рода одноуровневую дочернюю собственность?Или что-то очевидно, что я делаю не так?

Это было полезно?

Решение

на основе Этот ответ я решил проблему, создав пользовательский фильтр:

app.filter('fooBarFilter', [function () {
 return function (foobars, fooId) {
     var result = {};

     angular.forEach(foobars, function (foobar, key) {
         if (foobar.foo.Id === fooId) {
             result[key] = foobar;
         }
     });
     return result;
 };
}]);
.

и использовал его для фильтрации коллекции в HTML:

 <div data-ng-repeat="(key, fooBar) in fooBars | fooBarFilter : 4">
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top