2014-12-02 22 views
6

Próbuję przekazać Id do tablicy Json obiektów. Każdy obiekt musi mieć "JobId": wartość "wstawiona" przed wysłaniem do apiController. Próbuję użyć pętli forEach, ale utknąłem. W tej chwili zamiast wstawiania tego do każdego obiektu w tablicy wstawia się na końcu tablicy. Mam konfigurację plunkr. plunkrJak przesłać klucz/wartość do obiektów JSON

$scope.array = [{ 
    ESOURCELINEID:"5464", 
    QBRFQLINESUPPLIERPARTNUMBER:"HW12", 
    QBRFQLINESUPPLIERQUOTEUOM:"ft" 
}, { 
    ESOURCELINEID:"8569", 
    QBRFQLINESUPPLIERPARTNUMBER:"LT34", 
    QBRFQLINESUPPLIERQUOTEUOM:"Meter" 
}]; 

var JobId = 143; 
$scope.array.forEach(function (newJobItem) { 
    $scope.array.push({'JobId' : JobId}); 
}); 

var index = 0; 
$scope.array.forEach(function (newJobItem) { 
    console.log('newJobItem #' + (index++) + ': ' + JSON.stringify(newJobItem)); 
}); 

Odpowiedz

17

Co robisz jest iteracja po każdym elemencie poprzez $scope.array.forEach ale wtedy nie jesteś rzeczywiście modyfikowania element, który jest zwracany z zwrotnego newJobItem ale tylko pchanie nowy przedmiot: $scope.array.push({'JobId' : JobId});.

Prawidłową linią wewnątrz urządzenia forEach powinna być newJobItem.JobId = JobId;. W ten sposób modyfikujesz istniejące wpisy wewnątrz $scope.array zamiast tylko przesuwania nowych obiektów.

Ściślej:

$scope.array.forEach(function (newJobItem) { 
    $scope.array.push({'JobId' : JobId}); 
}); 

Staje:

$scope.array.forEach(function (newJobItem) { 
    newJobItem.JobId = JobId; 
}); 
+0

Dzięki, w moim przypadku potrzebuję go jako tablicy. Więc możesz użyć tego w nawiasach: '$ scope.array.push ({[JobId]: Job [JobId]});" Mam nadzieję, że to pomoże każdemu również ... – Silvan

4

Chcesz manipulować obiektów w tablicy, a nie sam tablicy. Wypróbuj to:

$scope.array.forEach(function (newJobItem) { 
    var JobId = 143; 
    newJobItem.JobId = JobId; 
}); 
+0

oddać głos za poprawność, ale kilka minut za pierwszy facet! w każdym razie dzięki – texas697

Powiązane problemy