Sto riscontrando un problema nel collegare i dati recuperati dal server a un elenco a discesa. Il problema principale credo sia il fatto che il confronto avvenga su tipi di oggetti diversi.menu a discesa AngularJS (ng- opzioni) non vincolante - stringa all'oggetto (selezione iniziale)
Ad esempio: 1. L'oggetto restituito dal server contiene una stringa di codice valuta. vogliamo che questo sia legato ad un elemento nell'elenco a discesa
"baseCurrencyCode":"GBP"
Il modello vista restituisce l'elenco delle valute .. Questi vengono restituiti come un elenco di valute oggetti con diverse proprietà
{"currencies":[{"id":1,"rateId":0,"abbreviation":"AFN","description":"Afghani","rate":0.0,"rateDescription":null,"languageCode":"en-gb","isDefault":true,"fullDescription":"AFN - Afghani - ","shortDescription":"AFN - Afghani"}}
ecc
Attualmente, ho ottenuto questo lavoro scrivendo una funzione per passare attraverso ogni proprietà per ogni elemento in th e lista, trova la proprietà corretta che vogliamo confrontare - fai il confronto e poi restituisci la selezione iniziale.
Quando si chiama il metodo di salvataggio, è necessario associare manualmente l'abbreviazione della valuta all'oggetto che si desidera restituire al server.
Sicuramente ci deve essere un modo migliore per farlo?
Alcuni del mio codice di riferimento ..
<select ng-model="selectedCurrency" ng-options="currency.shortDescription for currency in viewModel.currencies"></select>
// Call to my custom method..List, PropertyName, value to compare
$scope.selectedCurrency = InitialiseDropdown($scope.viewModel.currencies, "abbreviation", $scope.updatedObject.baseCurrencyCode);
// Code executed when saving - to bind the currency to the updated object
$scope.updatedObject.baseCurrencyCode = $scope.selectedCurrency.abbreviation;
Ogni aiuto è apprezzato!
EDIT Scusate se non sono stato abbastanza chiaro .. Per riassumere ..
Il problema principale qui è vincolante per la discesa e la selezione iniziale.
L'oggetto che stiamo aggiornando contiene un parametro (stringa) dell'abbreviazione della valuta.
L'elenco da cui selezioniamo è un elenco di oggetti valuta. Poiché si tratta di due tipi di oggetti diversi, non sono stato in grado di collegare il binding a due vie a due e ho scritto del codice per eseguire questa operazione al momento del recupero iniziale e al salvataggio.
Il modo più semplice per risolvere il problema sarebbe quello di restituire un oggetto valuta nel nostro recupero invece di una semplice stringa dell'abbreviazione, ma questa non è un'opzione.
C'è un modo migliore per abilitare il bind a 2 vie su diversi tipi di oggetto?
Grazie ancora
Grazie per il vostro contributo ..Il metodo che hai descritto è praticamente quello che ho fatto, ma significa che dobbiamo chiamare quel metodo di inizializzazione su ogni drop down. Non c'è un modo più pulito per fare questo? – Shorttylad
C'è: ripulisci la tua logica aziendale. Il server invia una serie di oggetti e un codice valuta e si aspetta un oggetto valuta (questo è il modo in cui lo capisco almeno). Ciò significa che in alcuni casi è necessario effettuare una ricerca (per determinare quale oggetto valuta corrisponde ad un codice valuta). Ho ragione ? – gkalpak
@ user1863426: dai un'occhiata alla mia risposta aggiornata. E 'questo quello che vuoi ? – gkalpak