jeśli masz sterownik do manipulowania $ zmienne zakresie w angularjs, czy istnieje idiomatycznych sposób:Reinitialize angularjs kontroler
- zresetować $ zakresu sterownika i
- restart inicjalizacji sterownik ?
Dla skomplikowanych kontrolerów bardzo wygodne byłoby zresetowanie każdej zmiennej do jej wartości początkowej, szczególnie jeśli to, czego naprawdę chcesz, to prosta reinicjalizacja kontrolera i zakresu. Nawigowanie do tego samego adresu URL ponownie przez $location.path()
nie pomaga.
Edycja: załóżmy, że nie można użyć żadnego hakowania $window.location
, ponieważ naruszałoby to CSP w aplikacjach Chrome w pakiecie.
Nie zgadzam się, myślę, że jest to doskonale eleganckie rozwiązanie. W pewnym sensie przeładowujesz stronę, więc $ route.reload() ma wiele sensu. – wvdz
@popovitsj: Chociaż świetnie jest wiedzieć, że to nie musi być uważane za złą praktykę, nadal nie jestem do końca przekonany. Chociaż masz absolutną rację, że istnieje pewne odwołanie do tego rozwiązania, ponieważ semantyczne '$ route.reload()' jest podobne do ponownego załadowania strony, nadal wytwarza dużo narzutów. Może to być niezrozumiałe w wielu konkretnych przypadkach użycia (na pewno było wtedy w moim), ale nadal byłoby miło mieć równie czystą metodę, która unika tworzenia tego narzutu. – bfncs
Czy możemy przenieść zawartość oninit w prywatnej metodzie (powiedzmy "init") i wywołać ją z oninit i ostatecznie użyć tej samej prywatnej metody, aby zresetować kontroler tyle razy, ile chcemy? – JVM