#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’}}]