Ho una matrice esistente con un oggetto e diverse proprietà create in un primo passaggio. Si è creato dalla seguente funzione:Aggiunta di proprietà a ciascun oggetto di una matrice indipendentemente con AngularJS angular.extend
$scope.recordlist = extractRecordJSONFromLocalStorage();
$scope.addRecord = function() {
$scope.recordlist.push(
{
date: $scope.dateJson,
time: $scope.time,
car: $scope.carList.code,
driver: $scope.driverList.name,
from: $scope.locationList.place,
destination: $scope.locationList2.place,
pax: $scope.paxList
}
);
$scope.custom = $scope.custom === false ? true: false;
$scope.carList = 0;
$scope.driverList = 0;
$scope.locationList = 0;
$scope.locationList2 = 0;
jsonToRecordLocalStorage($scope.recordlist);
};
Essa si traduce nella seguente array:
[{
"date":"2014 10 16",
"time":"20.22",
"car":"396",
"driver":"Seb",
"from":"A",
"destination":"B",
"pax":"3"
}]
Quello che sto cercando di fare è aggiungere un'altra proprietà in oggetto esistente sul prossimo passo con ng clic. Ho provato con la seguente funzione ma non sembra funzionare.
$scope.insertRecord = function (recordlist) {
var arrival = { 'arrival' : moment().format("HH.mm") }
console.log(arrival)
angular.extend($scope.recordlist, arrival)
jsonToRecordLocalStorage($scope.recordlist);
}
Il risultato finale che sto cercando è la seguente:
[{
"date":"2014 10 16",
"time":"20.22",
"car":"396",
"driver":"Seb",
"from":"A",
"destination":"B",
"pax":"3",
"arrival":"23.10"
}]
Forse un'altra cosa da prendere anche in considerazione è che in app esiste la possibilità di avere molti oggetti differenti essere elencati , alcuni con la proprietà arrival
già definita, ma alcuni la avranno in futuro.
Eventuali suggerimenti?
EDIT
Le 2 soluzioni sono stato lavorato ma non realizzare ciò che sto cercando, quindi probabilmente mi era chiaro su quello che sto cercando di fare.
Sto salvando una raccolta di oggetti in una matrice, ogni oggetto ha una proprietà arrival
che verrà definita in una seconda fase.
Quindi, prima ho creare un array di oggetti come questo:
[
{
"date":"2014 10 16",
"time":"20.42",
"car":"396",
"driver":"Seb",
"from":"A",
"destination":"B",
"pax":"3",
},
{
"date":"2014 10 16",
"time":"20.12",
"car":"319",
"driver":"Seb",
"from":"C",
"destination":"D",
"pax":"4",
},
{
"date":"2014 10 16",
"time":"20.22",
"car":"396",
"driver":"Seb",
"from":"G",
"destination":"A",
"pax":"1",
}
]
Questo viene visualizzato sulla vista in un layout di tabella-like. Ogni riga contiene i dati di un oggetto e inizialmente non include la proprietà arrival
perché l'app tiene traccia dei movimenti dell'automobile e l'auto non è arrivata a destinazione.
Ogni riga ha anche un pulsante di attivazione insertRecord()
, che definisce l'orario di arrivo e dovrebbe includere la proprietà arrival
in ciascun oggetto, indipendentemente.
Quindi, in questo esempio, forse l'auto dal secondo oggetto è arrivato, e voglio essere in grado di aggiungere la proprietà arrival
solo per questo particolare oggetto, lasciando l'array come questo:
[
{
"date":"2014 10 16",
"time":"20.42",
"car":"396",
"driver":"Seb",
"from":"A",
"destination":"B",
"pax":"3"
},
{
"date":"2014 10 16",
"time":"20.12",
"car":"319",
"driver":"Seb",
"from":"C",
"destination":"D",
"pax":"4",
"arrival":"20.35"
},
{
"date":"2014 10 16",
"time":"20.22",
"car":"396",
"driver":"Seb",
"from":"G",
"destination":"A",
"pax":"1"
}
]
Le 2 soluzioni proposte da dfsq mi hanno permesso di definire sia l'arrivo per il primo oggetto dell'array, sia per tutti gli oggetti contemporaneamente, ma non per ciascun oggetto separatamente.
Questo è il codice HTML in cui insertData si chiama:
<div class="row msf-row" ng-repeat="record in recordlist | filter: search">
<div class="col-md-1">{{record.time}}</div>
<div class="col-md-1"><strong>{{record.car}}</strong></div>
<div class="col-md-1">{{record.driver}}</div>
<div class="col-md-3">{{record.from}}</div>
<div class="col-md-3">{{record.destination}}</div>
<div class="col-md-1">{{record.pax}}</div>
<div class="col-md-1">
<button ng-click="insertRecord()" ng-show="!record.arrival"><i class="fa fa-cog"></i></button>{{record.arrival}}
</div>
</div>
Essendo così, eventuali suggerimenti su come arrivare?
"Ogni riga ha anche un pulsante di attivazione InsertRecord()" - allora perché non si passa l'oggetto da quella riga a 'insertRecord'? – zeroflagL
Potresti approfondire come farlo? Grazie!! –
Dovresti mostrare quella parte dell'HTML, la parte in cui viene chiamato 'insertRecord'. – zeroflagL