【问题标题】:Angularjs filter on nested propertyAngularjs过滤嵌套属性
【发布时间】:2014-07-30 16:59:57
【问题描述】:

我有以下 json 对象的数组:

 { 
    fooBar:{ 
        Id: 2
        Foo:  { 
                Id: 4
                IsNew: false
              } 
         Bar: { 
                Id: 1
                IsNew: false
              }
           }
  }

我想过滤 fooBar.Foo.Id,所以基于 this answer 我期待以下工作:

<div data-ng-repeat="fooBar in fooBars | filter:{Foo:{Id : 4}}:true">

但这并没有给我任何回报。

我可以执行以下操作来过滤 fooBar.Id 并且效果很好:

<div data-ng-repeat="fooBar in fooBars | filter:{Id : 2}:true">

我应该为这种下一级子属性匹配编写自定义过滤器吗?或者有什么明显的我做错了吗?

【问题讨论】:

  • 你能发布一个 plunker 或 fiddle 吗?并复制问题?
  • 你看到你提到的问题上更新的 JS Bin 了吗? Look at this filter。他们最终也找到了另一种解决方案。

标签: angularjs angularjs-ng-repeat angularjs-filter


【解决方案1】:

基于this answer,我通过创建自定义过滤器解决了这个问题:

app.filter('fooBarFilter', [function () {
 return function (foobars, fooId) {
     var result = {};

     angular.forEach(foobars, function (foobar, key) {
         if (foobar.foo.Id === fooId) {
             result[key] = foobar;
         }
     });
     return result;
 };
}]);

并用它来过滤 HTML 中的集合:

 <div data-ng-repeat="(key, fooBar) in fooBars | fooBarFilter : 4">

【讨论】:

    猜你喜欢
    • 2023-03-31
    • 2015-11-30
    • 2017-02-21
    • 2014-06-21
    • 1970-01-01
    • 2016-02-27
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    相关资源
    最近更新 更多