Jak przekazać dane z kontrolera serwera do kontrolera AngularJS?
Natknąłem się na to, co uważam za typowy scenariusz, w którym używam wzorca MVC (konkretnie platformy MVC ASP.NET) dla aplikacji internetowej z AngularJS w interfejsie. Mój problem polega na tym, że mam określoną wartość, która jest częścią modelu przekazywanego do mojego widoku, którą również chcę udostępnić w zakresie $ scope mojego kontrolera Angular, najlepiej, gdy tylko kontroler zostanie zainicjowany.
Jak to zrobić, to pytanie, które zostało już zadane i na które udzielono odpowiedzi. Jest na to oczywisty kandydat:
ngInit. Jednak w pewnym momencie Angular został zaktualizowany
swoją dokumentację
http://docs.angularjs.org/api/ng/directive/ngInit/
w czymś, co wydaje się być ostrzeżeniem przed tą konkretną myślą:
Jedynym odpowiednim zastosowaniem
ngInitjest wygładzanie specjalnych właściwości
ngRepeat, jak pokazano na poniższej demonstracji. Również w tym przypadku kontrolery powinny być używane do inicjalizacji wartości w zakresie, a nie
ngInit.
Proponowana alternatywa nie jest zbyt odpowiednia.
Oczywiście mogę wymyślić inne obejścia. Na przykład widok może wstawić wartość do dyrektywy
ngModeldla ukrytych danych wejściowych. Albo mógłbym po prostu zignorować ostrzeżenie i mimo wszystko użyć
ngInit. Ale wszystko, co przychodzi mi do głowy, to albo brzydszy sposób na zrobienie tego samego, co
ngInit, albo wyraźnie gorszy.
Ostatecznie fakt, że to, co wydaje mi się oczywistym rozwiązaniem, jest ewidentnie błędne, jest prawdopodobnie wskazówką, że moje myślenie nie jest zgodne z tym, jak powinno się robić Angular. Więc moje pytanie nie brzmi „jak sobie z tym poradzić”, ale raczej:
- Jak ja rozdać z tym scenariuszem czy go uniknąć
- Dlaczego nie powinienem używać
ngInit
Wyjaśnienie, ponieważ nie wynika to jasno z pierwszych dwóch komentarzy: Dotyczy to sytuacji, w której część lub większość strony jest obsługiwana bezpośrednio jako widok MVC, a Angular zapewnia tylko określoną część funkcjonalności. Dane, które chcę przekazać do mojego kontrolera Angular, są już przekazane do widoku w modelu. Nie chcę, aby kontroler Angular przeszedł i musiał wykonać własne żądanie get do serwera, aby uzyskać ten sam parametr, który jest już dostępny do prezentacji w innym formacie.
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
2 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
https://docs.angularjs.org/guide/providers
https://docs.angularjs.org/guide/providers
Na przykład możesz zrobić coś takiego:
a następnie wstrzyknij go do kontrolera
jak opisano w tym artykule:
http://blog.mariusschulz.com/2 ... t-mvc
http://blog.mariusschulz.com/2 ... t-mvc
Jeśli uważasz, że może to być bardziej złożone niż tylko wartość, możesz użyć usługodawcy i wprowadzić go zamiast dostawcy wartości.
Anonimowy użytkownik
Potwierdzenie od:
Model
w ten sposób możesz przekazać dane od swojego kontrolera do swojego widoku:
Kontroler
Zegarek
: