Comment fusionner deux tableaux d'objets dans angularjs?

je veux ajouter le tableau d'objets suivant avec un existant dans angulajs pour mettre en œuvre la fonctionnalité de charge plus.

ie, en ajoutant la réponse AJAX avec une existante à chaque fois.

j'ai une variable, $scope.actions qui contient la suite JSON données

    {
    "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 suivants JSON réponse à chaque fois 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 il ne fonctionne pas et obtenir l'erreur suivante message

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

27
demandé sur Muhammed Shihab 2015-04-29 18:49:16

4 réponses

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

Dans votre cas, il serait :

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

Voir la documentation ici :

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

Sinon, si vous obtenez seulement de nouvelles valeurs à partir du serveur, vous pouvez effectuer les opérations suivantes

for (var i=0; i<data.length; i++){
    $scope.actions.data.push(data[i]);
}
38
répondu Deblaton Jean-Philippe 2015-04-29 16:17:52

Cela fonctionne pour moi :

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

Dans votre cas, il serait :

$scope.actions.data = $scope.actions.data.concat(data)
23
répondu mbejda 2015-12-05 07:59:58
$scope.actions.data.concat is not a function 

même problème avec moi, mais je résoudre le problème par

 $scope.actions.data = [].concat($scope.actions.data , data)
4
répondu shah 2016-05-13 20:49:44

Simple

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

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

Testé sur angulaire 1.4.1

2
répondu Nishchit Dhanani 2016-09-14 09:44:46