Próbuję zrobić coś takiego:
<div ng-controller="TestCtrl">
<div ng-repeat="(k,v) in items | filter:hasSecurityId">
{{k}} {{v.pos}}
</div>
</div>
Część AngularJs:
function TestCtrl($scope)
{
$scope.items = {
'A2F0C7':{'secId':'12345', 'pos':'a20'},
'C8B3D1':{'pos':'b10'}
};
$scope.hasSecurityId = function(k,v)
{
return v.hasOwnProperty('secId');
}
}
Ale w jakiś sposób pokazuje mi wszystkie elementy. Jak mogę filtrować według (klucz, wartość)?
Odpowiedzi:
Filtry kątowe mogą być stosowane tylko do tablic, a nie obiektów, z interfejsu API angulara -
Masz tutaj dwie możliwości:
1) przejdź
$scope.items
do tablicy lub -2) przefiltruj wstępnie
ng-repeat
elementy, na przykład:A na kontrolerze:
jsfiddle : http://jsfiddle.net/bmleite/WA2BE/
źródło
Moim rozwiązaniem byłoby utworzenie niestandardowego filtra i użycie go:
A w html:
źródło
Możesz również używać
ng-repeat
zng-if
:źródło
Lub po prostu użyj
Zobacz zaktualizowane rozwiązanie tutaj:
http://jsfiddle.net/RFontana/WA2BE/93/
źródło
ng-if
zamiast tegoMożesz po prostu użyć modułu angular.filter , a następnie możesz filtrować nawet według zagnieżdżonych właściwości.
zobacz: jsbin
2 Przykłady:
JS:
HTML:
źródło
angular.filter
nie jest to podstawowy moduł kątowy i jesteś jego autorem.toArray
filtra już nie ma. Czy jest zamiennik, bofilter
filtr nadal nie dopuszcza obiektów?Trochę późno, ale szukałem podobnego filtra i skończyłem na czymś takim:
źródło
Chociaż to pytanie jest dość stare, chciałbym podzielić się moim rozwiązaniem dla programistów Angular 1. Chodzi o to, aby po prostu ponownie użyć oryginalnego filtru kątowego, ale w sposób przezroczysty przepuścić dowolne obiekty jako tablicę.
użyj tego w ten sposób:
tutaj jest plunker
źródło
Zrobiłem trochę więcej ogólnego filtra, którego używałem już w wielu projektach:
HTML:
JS:
źródło