push.apply не работает с AngulaJS forEach

#angularjs

#angularjs

Вопрос:

Я пытаюсь создать многомерный объект, используя цикл forEach в AngularJS.

 $scope.area_element = [];

$http({method: 'GET', url: 'api/elements'}).
    then(function(res){
        $scope.elements = res.data;
        angular.forEach($scope.elements, function(itemE){
            $scope.area_element.push({cost_element: itemE.cost_element, element_desc: itemE.element_desc});
            angular.forEach($scope.pm_area_ae, function(item, key){
                $http.get('api/work_ordersmae/'  $rootScope.isNum  '/'  $scope.itemC '/'  item.rnem_area  '/'  itemE.cost_element).
                    success(function(data, status, headers, config){
                    $scope.area_element.push.apply($scope.area_element, data);
                });


            });

        });

});
  

HTML

 <pre><div class="row col-sm-12">
    <table class="table table-hover">
      <thead>
        <tr>
          <th>Cost Element</th>
          <th class="text-center" ng-repeat="ar in pm_area_ae">{{ar.rnem_area}}</th>
        </tr>
      </thead>
      <tbody>
        <tr ng-repeat="e in area_element">
          <td>{{e.cost_element}} {{e.element_desc}}</td>
          <td class="text-right" ng-repeat="elem in e">{{elem.area_cost}}</td>
        </tr>
      </tbody>
    </table>
</div></pre>
  

Это не работает. Значение area_cost не отображается. но я получаю несколько [object] в журнале консоли.

Правильно ли я использую push.apply(); для этого типа функций? Заранее спасибо

Комментарии:

1. Это зависит от того, есть ли data массив параметров, которые вы хотите применить к push методу. Если data это всего лишь один объект, то вы можете использовать $scope.area_element.push.call($scope.area_element, data) вместо этого. Если data может быть один объект или массив элементов, то используйте: $scope.area_element.push.apply($scope.area_element, [].concat(data));

2. Почему вы используете использование push.apply в том виде, в каком вы его предоставляете, этот контекст уже будет иметь

3. Я хочу, чтобы это было так [{cost_element: ‘602’, rnem_area: {area: ‘nl1’, area_cost: ‘2000’},{area: ‘nl2’, area_cost: ‘1000’}}]