Подтвердить что ты не робот

Как объединить два массива объектов в 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

4b9b3361

Ответ 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