Angularjs Фильтр на вложенном свойстве
-
21-12-2019 - |
Вопрос
У меня есть массив следующего объекта 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">
. Не связан с StackOverflow