AngularJS ng-repeat对象,按对象过滤

时间:2015-01-23 12:18:31

标签: javascript angularjs

可以迭代对象并检查它们的属性吗?

{
 Obj1 : { visible : true, value : 2}
 Obj2 : { visible : false, value : 4}
 Obj3 : { visible : true, value : 6}
}

HTML:

<ul ng-show="data.templates.attachments">
        <li ng-repeat="(key, value) in data.templates.attachments | filter :       value.visible">{{key}}</li>
</ul>

如果我只想展示它是完美的,但我想隐藏这些隐形。

2 个答案:

答案 0 :(得分:3)

试试这个

<li ng-repeat="(key, value) in data | filter: {visible: true}">{{value.value}}</li>

Example

更新:

object

中的object属性进行过滤
// only for one property, for example {a: 1}
myApp.filter('filterByProperty', function () {
  return function(items, field) {
      var result = {},
          key    = Object.keys(field).pop(),
          value  = field[key];

      angular.forEach(items, function(el, index) {
          if (el[key] === value) {
              result[index] = el;
          }
      });

      return result;
  };
});

Example

答案 1 :(得分:0)

亚历山大已经回答了这个问题,但是如果你仍然希望保留dom中每个对象的元素而只是希望它不被显示(对象中的可见属性会让人觉得它可能没有被显示,而不是没有插入dom),

然后您可以使用ng-class执行此操作 http://jsfiddle.net/naeemshaikh27/dKjz5/48/