是否可以在AngularJS中过滤对象属性名称?

时间:2014-07-24 03:10:33

标签: angularjs

为了论证,请采用以下(相当复杂的)JSON数据结构,并假设我无法更改它:

 $scope.myObj = {
    "DynamicKeyName": {...},
    "AnotherKeyName": {...} 
    };

属性本身的值并不重要。是否可以根据属性名称过滤此对象?例如,我只想显示符合特定命名约定的属性。请注意,我不知道密钥名称,也不想将它们硬编码到应用程序中

有些事情:

<div ng-repeat="(key,val) in myObj | filterByKey:'something'"></div>

我相信我可能需要编写一个过滤器,但过滤器似乎适合使用数组。

1 个答案:

答案 0 :(得分:1)

我不知道是否有内置过滤器,但您可以随时编写自己的过滤器。像这样:

app.filter("filterByKey",function(){
  return function (input,filter){
    var result = {};

    for (var key in input){
      if (key.indexOf(filter)>=0){
        result[key] = input[key];
      }
    }

    return result;
  }
});

DEMO