【问题标题】:Angular using foreach loop to push objects into an arrayAngular 使用 foreach 循环将对象推入数组
【发布时间】:2014-10-12 20:35:10
【问题描述】:

我有一个复杂的数组,它在父对象中包含对象。我已经通过 ng-repeat 提取了我想要使用的对象并将它们返回。我希望能够使用角度 forEach 将所有这些对象放入一个数组中。我不太确定该怎么做。

这是我要返回的对象:

{"day":"21","title":"ok","summary":"ok","description":"ok","_id":"53ee9f0fc6aed109c6d33cfd"}
{"day":"2","title":"ok","summary":"ok","description":"ok","_id":"53ee9f038782309c6d892"}
{"day":"27","title":"ok","summary":"ok","description":"ok","_id":"533240fc6ae32433chd"}

这是我的观点:上面的对象由 ng-repeat 中的“项目”表示。

    <div class="calDynamic" data-ng-repeat="n in [] | range:100">
<div ng-repeat="cal in calendar[n].year | filterKey:month">
  <div ng-if="cal != '' ">
    <div class="calendar">

    <p>{{cal}}</p>
<div ng-repeat="items in cal ">

        <a href="/events/{{items.day}}">
          <article class="eventslist">
           <div class="numberedDate">
               <h3>{{items.day}}</h3>
            </div>
            <div class="calInfo">
            <h5>{{items.title}}</h5>
               <p>{{items.summary}}&nbsp;<a>more</a></p>
            </div>
           </article>


      </div><!-- ng-repeat val,key -->
</div><!-- calendar -->
</div><!-- ng-if cal -->
</div><!-- ng-repeat cal -->
</div><!-- calDynamic -->

我将如何使用如下所示的 foreach 循环将这些返回的对象存储到一个数组中,以便我可以对其使用 filter 方法?

var arr = [];
angular.forEach(items, function (item) {
    arr.push(item);
});

【问题讨论】:

  • 不,我想按“天”值对数组进行排序。如果可能的话,我想从对象创建数组,然后在视图中使用该数据。总体目标是能够对数据使用过滤器。
  • 在这种情况下,只需过滤ng-repeat="items in cal | insertdayfilterhere"
  • 您也可以在一个过滤器上拥有多个过滤器,如果您想添加到父级ng-repeat"cal in calendar[n].year | filterKey:month | insertdayfilterhere"&gt;,只需使用| 将它们分开即可。
  • 我已经尝试过了,似乎对象的复杂性阻止了对日值的过滤。这是从中提取“项目”对象的整个对象。
  • { "_id" : ObjectId("5"), "year" : { "December" : [], "November" : [], "October" : [], "September" : [],“八月”:[],“七月”:[{“天”:“21”,“标题”:“u”,“摘要”:“u”,“描述”:“ok”,“_id " : ObjectId("5366d") } ], "June" : [], "May" : [], "April" : [], "March" : [], "February" : [], "January" : [] }, }

标签: json angularjs foreach


【解决方案1】:

如果控制器中已有列表可用,则可以进行深层复制。

    var arr = [];
    angular.copy(items,arr);

如果你不使用angular.copy() 而只是尝试使用arr = items;,那么角度只会创建一个指针,在这种情况下你不需要它


angular.copy reference

【讨论】:

  • 我明白了,所以控制器中的'items'会引用视图中设置的变量items?
猜你喜欢
  • 1970-01-01
  • 2014-11-12
  • 1970-01-01
  • 2015-03-26
  • 1970-01-01
  • 1970-01-01
  • 2020-11-09
  • 2022-01-09
相关资源
最近更新 更多