/ / AngularJS: ng-model nie dostaje zastosowania w instancji kontrolera - angularjs

AngularJS: ng-model nie zostanie zastosowany w instancji kontrolera - angularjs

Tworzę program do planowania aplikacji internetowych za pomocą Angular i mam pewne problemy z <select> pole, które nie zmienia wartości w oparciu o zmienną oznaczoną ng-model.

Moja architektura wygląda następująco:

ja używam ui-router co daje mi różne stany widzenia, po jednym dla każdej strony mojego planisty. Na głównej stronie HTML jest wywoływany kontroler MainController. Tutaj skonfigurowałem mój model JSON, $scope.Master = {} które chcę użyć w całym terminarzu. Wszystkie strony planisty powinny dziedziczyć ten model i kontynuować modyfikację / dodanie do niego.

Mam wtedy 4 strony planisty, takie jak:

Start -> Accounts -> Settings -> Review

Każda strona ma własny kontroler, który jest uruchamiany za każdym razem, gdy odwiedzam stronę. Na Start strona, mam <select> pudełko, które ma ng-model="$scope.Master.Start.selectedAccount" która jest dynamicznie wypełniana przy użyciu StartController (dlatego jest zapełniany za każdym razem, gdy wchodzę na stronę początkową).

To <select> działa świetnie po raz pierwszy na stronie, ale jeśli pójdę do Accounts a następnie wraca, pole wyboru powraca do wartości domyślnej "Wybierz konto", zamiast wybranego konta, które znajduje się w $scope.Master.Start.selectedAccount model, który jest związany z <select> pudełko

Myślałem, że mogę po prostu coś takiego zrobić $scope.$apply lub coś w celu ponownego zastosowania wiązania do obiektu DOM, ale to tylko dało mi błąd, mówiąc, że jest już trawiony.

Jak mogę zastosować wiązanie do pliku <select> pole po załadowaniu strony 2 lub więcej razy?

Odpowiedzi:

0 dla odpowiedzi № 1

Jest tak prawdopodobnie dlatego, że za każdym razem, gdy wracasz do oryginalnej strony, tworzony jest nowy kontroler, ponieważ został on usunięty z DOM, kiedy go opuściłeś. A zatem $scope.Master.Start.selectedAccount. Aby to zapisać, możesz albo

  1. Użyj pojedynczej usługi / fabryki w głównej aplikacji, aby zapisać tę wartość https://docs.angularjs.org/guide/services#!

  2. Zapisać $scope.Master.Start.selectedAccount jako zmienna globalna https://docs.angularjs.org/api/ng/service/$ rootScope

  3. Połóż ten kontroler na zewnątrz


0 dla odpowiedzi nr 2

Naprawdę przepraszam ... Zrozumiałem, że zapełniłem <select> używanie ng-repeat zamiast ng-options Nie mam pojęcia, jak to zrobiłem ... To był problem