1. ホーム
  2. javascript

[解決済み] AngularJsでng-repeatを使用してフィルタリング(キー、値)を行うには?

2022-05-16 12:10:32

質問

私は次のようなことをしようとしています。

<div ng-controller="TestCtrl">
    <div ng-repeat="(k,v) in items | filter:hasSecurityId">
        {{k}} {{v.pos}}
    </div>
</div>

AngularJsの部分です。

function TestCtrl($scope) 
{
    $scope.items = {
                     'A2F0C7':{'secId':'12345', 'pos':'a20'},
                     'C8B3D1':{'pos':'b10'}
                   };

    $scope.hasSecurityId = function(k,v)
    {
       return v.hasOwnProperty('secId');
    }
}

しかし、どういうわけか、それは私にすべての項目を表示しています。(key,value)でフィルタリングするにはどうしたらよいでしょうか?

どのように解決するのですか?

アンギュラー フィルター は配列にしか適用できず、オブジェクトには適用できません。

"配列からアイテムのサブセットを選択し、新しい配列として返します.".Selects.Selects.Selects.Selects;

ここでは2つのオプションがあります。

1) 移動する $scope.items を配列または -

2) 事前にフィルタリングして ng-repeat の項目を、このように

<div ng-repeat="(k,v) in filterSecId(items)">
    {{k}} {{v.pos}}
</div>

そして、Controller上では

$scope.filterSecId = function(items) {
    var result = {};
    angular.forEach(items, function(value, key) {
        if (!value.hasOwnProperty('secId')) {
            result[key] = value;
        }
    });
    return result;
}

jsfiddle : http://jsfiddle.net/bmleite/WA2BE/