Buduję dynamiczną aplikację internetową za pomocą AngularJS. Czy możliwe jest posiadanie wielu ng-view
w jednym szablonie?AngularJS - wiele widoków w jednym szablonie
Odpowiedz
Możesz mieć tylko jeden ng-view
.
Możesz zmienić jego zawartość na kilka sposobów: ng-include
, ng-switch
lub mapować różne kontrolery i szablony za pomocą metody routeProvider.
kontrolery mapowania i szablony zastąpią cały element ng-view, prawda? – zx1986
A co z dynamiczną zmianą treści widżetu? Czy nie chcesz utworzyć widoku dla widżetu i kontrolera dla widgetu i modelu dla widżetu? –
Czy zaleca się korzystanie z widoków? Czy nie lepiej jest zdefiniować elementy div za pomocą 'ng-show' i' ng-hide' oraz kontrolować ich widoczność za pomocą zmiennych? Ponieważ czasami chciałbym ukryć/pokazać wiele komponentów – SomethingSomething
Używając zwykłego modułu ng-view
, nie można mieć więcej niż jednego szablonu dynamicznego.
Jednak pozwala na to this project (poszukaj ui-router
).
angular-ui wydaje się być dobrym wyborem w (niedalekiej przyszłości), ale nadal wydaje się bardzo niestabilny do użytku produkcyjnego. –
UI-Router to projekt, który może pomóc: https://github.com/angular-ui/ui-router Jeden z nich dysponuje jest Wiele Nazwane widoki
UI-Router posiada wiele funkcji i polecam Ci go używać, jeśli pracujesz na zaawansowana aplikacja.
Sprawdź dokumentację wielu nazwanych widoków here.
Niestety jak czytnik ui-router mówi: Uwaga: UI-Router jest w trakcie aktywnego rozwoju. W związku z tym, chociaż biblioteka jest dobrze przetestowana, interfejs API może ulec zmianie. Rozważ użycie go w aplikacjach produkcyjnych tylko wtedy, gdy czujesz się komfortowo, śledząc dziennik zmian i odpowiednio aktualizując swoje użycie. – trainoasis
@trainoasis Używany do wielu projektów, Wydaje się 'bardzo' stabilny i do tej pory nie miałem problemu ze zmianą API, w rzeczywistości nie pamiętam żadnych większych zmian w API. –
Wierzę, że można to osiągnąć, po prostu ng-view
. W głównym szablonie możesz mieć sekcje ng-include
dla widoków podrzędnych, następnie w głównym kontrolerze zdefiniuj właściwości modelu dla każdego szablonu podrzędnego. Tak, aby automatycznie wiązały się z sekcjami ng-include
. To jest tak samo jak posiadanie wielu ng-view
można sprawdzić na przykładzie podanym w ng-include
documentation
na przykład po zmianie szablonu z listy rozwijanej, że zmienia treść. Załóżmy, że masz jeden główny ng-view
i zamiast ręcznie wybierać zawartość podrzędną, wybierając opcję rozwijaną, robisz to tak, jak po załadowaniu widoku głównego.
W przypadku braku rozwiązania takiego jak UI-Router, ng-include jest rzeczywiście realną alternatywą, jak wyjaśniłeś. To, czego ng-include nie jest w stanie zrealizować, to widoki oparte na adresie URL (stan), ścieżka $ nie może dynamicznie renderować różnych widoków na podstawie bieżącego adresu URL. Możemy przekręcić ramiona Angulara i zrobić to za pomocą niestandardowej logiki w kontrolerze, na przykład w 'ng-include' [documentation] (https://docs.angularjs.org/api/ng/directive/ngInclude) , ale nie jest to pożądany wzór architektury aplikacji, UI-Router jest właściwym rodzajem rozwiązania. – Yiling
Jeden plus za komentarz @Yiling. Używanie ng-include jest obejściem. –
Możliwe jest posiadanie wielu lub zagnieżdżonych widoków. Ale nie przez ng-view.
Główny moduł trasy w kanciastym nie obsługuje wielu widoków. Ale możesz użyć ui-routera. Jest to moduł innej firmy, który można uzyskać za pośrednictwem Github, angular-ui/ui-router, https://github.com/angular-ui/ui-router. Opracowywana jest również nowa wersja ngRoutera (ngNewRouter). W tej chwili nie jest stabilny. Zapewniam ci prosty przykład uruchomienia z routerem ui. Za jego pomocą można nazwać widoki i określić, które szablony i kontrolery mają być używane do ich renderowania. Używając $ stateProvider, powinieneś określić sposób renderowania symboli zastępczych dla określonego stanu.
<body ng-app="main">
<script type="text/javascript">
angular.module('main', ['ui.router'])
.config(['$locationProvider', '$stateProvider', function ($locationProvider, $stateProvider) {
$stateProvider
.state('home', {
url: '/',
views: {
'header': {
templateUrl: '/app/header.html'
},
'content': {
templateUrl: '/app/content.html'
}
}
});
}]);
</script>
<a ui-sref="home">home</a>
<div ui-view="header">header</div>
<div ui-view="content">content</div>
<div ui-view="bottom">footer</div>
<script src="bower_components/angular/angular.js"></script>
<script src="bower_components/angular-ui-router/release/angular-ui-router.js">
</body>
Do tej próbki potrzebne jest odniesienie do angularjs i kątowego-ui.router.
$ bower install angular-ui-router
Dziękuję Farshid, to jest świetne! Należy o tym wspomnieć w repozytorium Github-ui-ui/ruter Github https://github.com/angular-ui/ui-router gdzie dostałem moduł – totallytotallyamazing
Nie jestem pewien, dlaczego musiałbyś to zrobić. Dlaczego nie ng-include nagłówka/stopki i ng-zobacz zawartość? – user441521
- 1. wiele widoków katalogów za jednym expressjs aplikacji
- 2. Django: wiele modeli w jednym szablonie przy użyciu formularzy
- 3. Wiele UICollectionView w jednym kontrolerze
- 4. Pojedyncza animacja - wiele widoków
- 5. Wiele stylów w jednym widoku w Drupal
- 6. Wiele kontrolerów z jednym modelem
- 7. Jak zarządzać kilka widoków w angularjs
- 8. Wiele aplikacji django w jednym widoku
- 9. Jak dodać wiele funkcji w JEDNYM kliknięciu?
- 10. AngularJS ocenia zmienną $ rootScope w szablonie dyrektywy
- 11. AngularJS: Odmiany w szablonie opartym na atrybucie
- 12. Wiele modułów w Angularjs
- 13. Rozwiń listę - cofnij wiele widoków
- 14. Wiele SELECT w jednym zapytaniu
- 15. Wiele kolumn w jednym StaggeredGridView?
- 16. Wiele PickerViews w jednym widoku?
- 17. Wiele repozytoriów w jednym katalogu
- 18. Jak dodać wiele widoków nagłówka w ListView
- 19. Wiele widoków o różnych wysokościach w ViewFlipper
- 20. jak pozycjonować wiele widoków w ionic
- 21. Wiele niezależnych części w AngularJS
- 22. Wiele widoków na pojedynczy plik w Sublime Text 3
- 23. Angularjs wiele żądań $ http.get
- 24. Dyrektywa AngularJs: metoda wywołania z zakresu nadrzędnego w szablonie
- 25. Emacs: wiele widoków tego samego pliku
- 26. Jak utworzyć wiele okien/widoków na iPhone'ie?
- 27. Wiele konstruktorów z jednym parametrem
- 28. Jeden model domeny, wiele widoków json
- 29. Tworzenie wielu niestandardowych filtrów w jednym module w Angularjs
- 30. Dodaj wiele widoków niestandardowych układ programowo
wydaje się, że wniosek pull, nadal z pewnymi błędami: https://github.com/angular/angular.js/pull/1198 – Alp
Jan Varwig pisze o roli dyrektyw kątowej. Nie jest to odpowiedź na twoje pytanie, ale w niektórych przypadkach jego pomysły mogą być dobrą alternatywą: http: //jan.varwig.org/archive/angularjs-views-vs-directives/comment-page-1 –
przechodził przez kątowy tutorial i miał dokładnie to samo pytanie, nie wyjaśniają tego bardzo, wydaje się, że jest to dość głęboka koncepcja. – qwwqwwq