Как объединить два массива объектов в angularjs?
Я хочу добавить следующий массив объектов с существующим в angulajs для реализации дополнительной функции загрузки.
т.е. каждый раз добавляя ответ AJAX с существующим.
У меня есть одна переменная, $scope.actions
, которая содержит следующие JSON
данные,
{
"total": 13,
"per_page": 2,
"current_page": 1,
"last_page": 7,
"next_page_url": "http://invoice.local/activities/?page=2",
"prev_page_url": null,
"from": 1,
"to": 2,
"data": [
{
"id": 2108,
"action_type_id": 202,
"user_id": 1
},
{
"id": 2108,
"action_type_id": 202,
"user_id": 1
}
]
}
Я хочу добавить следующий ответ JSON
каждый раз, когда эта переменная.
{
"data": [
{
"id": 2108,
"action_type_id": 202,
"user_id": 1
},
{
"id": 2108,
"action_type_id": 202,
"user_id": 1
}
]
}
Я пробовал с $scope.actions.data.concat(data.data);
но он не работает и получает следующее сообщение об ошибке
$scope.actions.data.concat is not a function
Ответы
Ответ 1
Вы можете использовать angular.extend(dest, src1, src2,...);
В вашем случае это будет:
angular.extend($scope.actions.data, data);
Смотрите документацию здесь:
https://docs.angularjs.org/api/ng/function/angular.extend
В противном случае, если вы получите только новые значения с сервера, вы можете сделать следующее
for (var i=0; i<data.length; i++){
$scope.actions.data.push(data[i]);
}
Ответ 2
Это работает для меня:
$scope.array1 = $scope.array1.concat(array2)
В вашем случае это будет:
$scope.actions.data = $scope.actions.data.concat(data)
Ответ 3
$scope.actions.data.concat is not a function
та же проблема со мной, но я решу проблему
$scope.actions.data = [].concat($scope.actions.data , data)
Ответ 4
Простой
var a=[{a:4}], b=[{b:5}]
angular.merge(a,b) // [{a:4, b:5}]
Протестировано на angular 1.4.1