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 № 1Jest 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
Użyj pojedynczej usługi / fabryki w głównej aplikacji, aby zapisać tę wartość https://docs.angularjs.org/guide/services#!
Zapisać
$scope.Master.Start.selectedAccount
jako zmienna globalna https://docs.angularjs.org/api/ng/service/$ rootScopePołóż 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