web-dev-qa-db-fra.com

Comment fusionner un tableau de deux objets dans angularjs?

Je veux ajouter le tableau d'objets suivant avec celui existant dans angulajs pour implémenter plus de fonctionnalités.

c'est-à-dire, ajouter AJAX réponse avec une réponse existante à chaque fois.

J'ai une variable, $scope.actions Qui contient les données suivantes 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
        }
    ]
}

Je veux ajouter la réponse suivante JSON à chaque fois que cette variable.

    {
    "data": [
        {
            "id": 2108,
            "action_type_id": 202,
            "user_id": 1
        },
        {
            "id": 2108,
            "action_type_id": 202,
            "user_id": 1
        }
    ]
}

J'ai essayé avec $scope.actions.data.concat(data.data);

mais cela ne fonctionne pas et le message d'erreur suivant s'affiche

$scope.actions.data.concat is not a function

27
Muhammed Shihab

Vous pouvez utiliser angular.extend(dest, src1, src2,...);

Dans votre cas ce serait:

angular.extend($scope.actions.data, data);

Voir la documentation ici:

https://docs.angularjs.org/api/ng/function/angular.extend

Sinon, si vous ne recevez que de nouvelles valeurs du serveur, vous pouvez procéder comme suit:

for (var i=0; i<data.length; i++){
    $scope.actions.data.Push(data[i]);
}
39

Cela fonctionne pour moi:

$scope.array1 = $scope.array1.concat(array2)

Dans votre cas ce serait:

$scope.actions.data = $scope.actions.data.concat(data)
26
mbejda
$scope.actions.data.concat is not a function 

même problème avec moi mais je résous le problème en

 $scope.actions.data = [].concat($scope.actions.data , data)
4
shah

Facile

var a=[{a:4}], b=[{b:5}]

angular.merge(a,b) // [{a:4, b:5}]

Testé sur angular 1.4.1

3
Nishchit Dhanani