/ / AngularJS: ng-model non viene applicato all'istanza del controller - angularjs

AngularJS: il modello ng non viene applicato sull'istanza del controller - angularjs

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 № 1

Ciò è 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

  1. Utilizzare un singleton di servizio / fabbrica sull'app principale per salvare questo valore https://docs.angularjs.org/guide/services#!

  2. Salvare $scope.Master.Start.selectedAccount come variabile globale https://docs.angularjs.org/api/ng/service/$ rootScope

  3. Metti 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