Javascript ngRepeat-through映射和筛选条目中的条目

Javascript ngRepeat-through映射和筛选条目中的条目,javascript,angularjs,angularjs-ng-repeat,Javascript,Angularjs,Angularjs Ng Repeat,我在地图上有一个ngRepeat,它为每次迭代提供了一个“(键,值)”对。我现在需要写一个过滤器来限制我得到的一些结果。我将过滤器定义为有两个参数。我在ngRepeat调用中传递了一个参数,因此我应该期望得到两个参数。我手动传递的参数是布尔值。在调试器中,这两个参数都已设置,第二个参数为“true”,这就是我要传递的,因此我希望第一个参数对应于我的“(key,value)”对。我得到的第一个参数实际上是一个空对象 my HTML中的引用如下所示: <div ng-repeat="(name

我在地图上有一个ngRepeat,它为每次迭代提供了一个“(键,值)”对。我现在需要写一个过滤器来限制我得到的一些结果。我将过滤器定义为有两个参数。我在ngRepeat调用中传递了一个参数,因此我应该期望得到两个参数。我手动传递的参数是布尔值。在调试器中,这两个参数都已设置,第二个参数为“true”,这就是我要传递的,因此我希望第一个参数对应于我的“(key,value)”对。我得到的第一个参数实际上是一个空对象

my HTML中的引用如下所示:

<div ng-repeat="(name, thing) in thingMap | limitThings:showOnlyFailed">

当我进入调试器时,“entry”的值只是“Object{}”。

您可以看到
thingMap
作为名为
entry
的参数。若你们有一个空的对象,那个么你们的地图是空的


我已经创建了一个小plunk,您可以看到您的东西的哈希映射被正确地传递。

我认为boris刚才说的是正确的,但我修改了他的示例,使其更加清晰。当您对一个对象使用ng repeat时,整个对象被传递到过滤器中,而不是每个条目

我根据对象值中的“failed”属性使用angular.forEach进行了一些过滤


好吧,也许我应该说得更清楚些。在我添加这个过滤器之前,通过映射的这个迭代工作得很好。地图不是空的。我在标记中引用了键和值,它工作得很好。我只是这个过滤器有问题。然后没有足够的信息来回答。当我看到预期的行为时,我有一个例子。尝试将使用的角度版本更新为最新版本。我使用的是
1.2.12
Oh,发送到过滤器的参数是映射还是条目?我可能猜到了条目,但您的示例似乎暗示这是地图本身。真的,您可以看到entrie地图。角度过滤器的设计目的是将某些值转换为另一个值,而该值并不总是一个过滤值。名为
filter
(有点混乱)的本机角度过滤器仅用于过滤数组。您必须编写自己的过滤器来返回过滤后的映射
thingModule.filter("limitThings", ['ThingsService', function(ThingsService) {
return function(entry, showOnlyFailed) {
    return !showOnlyFailed || ThingsService.anyFailuresInList(entry.thing);
};
}]);
app.filter('limitThings', function() {
  return function(entry, showOnlyFailed) {
    console.log("Entry: " + entry + " Only Failed: " + showOnlyFailed);
    var filteredMap = {};
    angular.forEach(entry, function(value, key)
    {
      if(!showOnlyFailed || !value.failed)
      {
        filteredMap[key] = value;
      }
    });
    return filteredMap;
  }
});