Sto creando un pianificatore di app Web utilizzando Angular e sto riscontrando alcune difficoltà con un file <select>
casella che non cambia il valore in base alla variabile indicata con ng-model
.
La mia architettura è la seguente:
sto usando ui-router
che mi offre diversi stati di visualizzazione, uno per ogni pagina della mia agenda. La pagina HTML radice ha un controller chiamato MainController
. Qui è dove ho impostato il mio modello JSON, $scope.Master = {}
che desidero utilizzare in tutta la pianificazione. Tutte le pagine del pianificatore dovrebbero ereditare questo modello e continuare a modificarlo / aggiungerlo.
Quindi ho le mie 4 pagine del pianificatore come:
Start -> Accounts -> Settings -> Review
Ogni pagina ha il proprio controller che viene istanziato ogni volta che visito la pagina. Sul Start
pagina, ho un file <select>
scatola che ha ng-model="$scope.Master.Start.selectedAccount"
che viene popolato dinamicamente utilizzando il StartController
(quindi viene popolato ogni volta che arrivo alla pagina iniziale).
Questo <select>
funziona alla grande la prima volta sulla pagina, ma se vado a Accounts
e poi torna indietro, la casella di selezione torna al valore predefinito, "Seleziona un account", invece dell'account selezionato che si trova nel $scope.Master.Start.selectedAccount
modello che è vincolato al <select>
scatola
Pensavo di poter fare qualcosa di simile $scope.$apply
o qualcosa per riapplicare l'associazione all'oggetto DOM, ma questo mi ha appena dato un errore dicendo che sta già digerendo.
Come posso applicare l'associazione al file <select>
box dopo che la pagina è stata caricata 2 o più volte?
risposte:
0 per risposta № 1Ciò è probabilmente dovuto al fatto che ogni volta che torni alla tua pagina originale, viene istanziato un nuovo controller poiché è stato rimosso dal DOM quando l'hai lasciato originariamente. Così $scope.Master.Start.selectedAccount
. Per salvarlo, puoi entrambi
Utilizzare un singleton di servizio / fabbrica sull'app principale per salvare questo valore https://docs.angularjs.org/guide/services#!
Salvare
$scope.Master.Start.selectedAccount
come variabile globale https://docs.angularjs.org/api/ng/service/$ rootScopeMetti quel controller all'esterno
0 per risposta № 2
Mi dispiace davvero ... mi sono reso conto che stavo popolando il file <select
> utilizzando ng-repeat
invece di ng-options
non ho idea di come ci sia riuscito ... Questo era il problema