Mam następującą konfigurację:widoczność Przegubowe z ng obejmują w zależności od trasy
$routeProvider
.when('/cars', { templateUrl: 'app/cars/index.html', controller: 'CarsCtrl', reloadOnSearch: false })
.when('/bikes', { templateUrl: 'app/bikes/index.html', controller: 'BikesCtrl', reloadOnSearch: false });
i gdzieś w moim korzenia index.html znajduje się:
<a href="#/cars">Cars</a>
<a href="#/bikes">Bikes</a>
<div ng-view></div>
Teraz chcę zarówno widoki są ładowane i generowane w DOM w tym samym czasie i pokazują jeden z nich w zależności od trasy/adresu URL.
Coś jak poniżej (nie faktyczny działający kod, żeby dać ci pomysł).
app.js:
$routeProvider
.when('/cars', { controller: 'CarsCtrl', reloadOnSearch: false })
.when('/bikes', { controller: 'BikesCtrl', reloadOnSearch: false });
korzeń index.html:
<a href="#/cars">Cars</a>
<a href="#/bikes">Bikes</a>
<div ng-include="'app/cars/index.html'" ng-show="carsVisible"></div>
<div ng-include="'app/bikes/index.html'" ng-show="bikesVisible"></div>
UPDATE: Wiem, że ng-view niby to robi, ale różnica, czy subtelne, istnieje . Chcę, aby html każdego widoku był generowany raz i pozostawał w DOM przez cały czas.
Nie można tego zrobić za pomocą ng-view. Ale pytanie brzmi: dlaczego tak naprawdę chcesz to zrobić. Czy to dlatego, że chcesz "przetworzyć" każdą trasę, aby ładowała się szybciej? Routing jest już dość szybki, chyba że twoje kontrolery wymagają pewnych danych asynchronicznych, w takim przypadku użyjesz "rozwiązania" wewnątrz obiektu definicji trasy oraz kodu inicjalizacji aplikacji do pobierania asynchronicznych danych w tle. – Stewie