Saya mencoba melakukan sesuatu seperti:
<div ng-controller="TestCtrl">
<div ng-repeat="(k,v) in items | filter:hasSecurityId">
{{k}} {{v.pos}}
</div>
</div>
Bagian AngularJs:
function TestCtrl($scope)
{
$scope.items = {
'A2F0C7':{'secId':'12345', 'pos':'a20'},
'C8B3D1':{'pos':'b10'}
};
$scope.hasSecurityId = function(k,v)
{
return v.hasOwnProperty('secId');
}
}
Tapi entah bagaimana, itu menunjukkan semua item. Bagaimana cara memfilter (key, value)?
Jawaban:
Filter sudut hanya dapat diterapkan ke array dan bukan objek, dari API sudut -
Anda memiliki dua opsi di sini:
1) pindah
$scope.items
ke array atau -2) pra-filter
ng-repeat
item, seperti ini:Dan di Kontroler:
jsfiddle : http://jsfiddle.net/bmleite/WA2BE/
sumber
Solusi saya adalah membuat filter khusus dan menggunakannya:
Dan di html:
sumber
Anda juga dapat menggunakan
ng-repeat
denganng-if
:sumber
Atau cukup gunakan
Lihat solusi terbaru di sini:
http://jsfiddle.net/RFontana/WA2BE/93/
sumber
ng-if
sebaliknyaAnda cukup menggunakan modul angular.filter , dan kemudian Anda dapat memfilter bahkan menurut properti bertingkat.
lihat: jsbin
2 Contoh:
JS:
HTML:
sumber
angular.filter
bukan modul sudut inti dan Anda adalah pembuatnya.toArray
filter sudah tidak ada. Apakah ada penggantinya, karenafilter
filter masih tidak memungkinkan adanya benda?Ini agak terlambat, tetapi saya mencari filter serupa dan berakhir menggunakan sesuatu seperti ini:
sumber
Meskipun pertanyaan ini agak lama, saya ingin membagikan solusi saya untuk developer angular 1. Intinya adalah hanya menggunakan kembali filter sudut asli, tetapi secara transparan meneruskan objek apa pun sebagai larik.
gunakan seperti ini:
di sini adalah plunker
sumber
Saya membuat lebih banyak filter umum yang telah saya gunakan di banyak proyek:
HTML:
JS:
sumber