2013-05-21 18 views
16

Podczas próby dodania ng-view do wnętrza ng-include nic się nie dzieje. na przykład w poniższym kodzie, gdy themes/północy/index.html posiada ng-view, bez widoku jest renderowane:Jak zagnieżdżać ng-view wewnątrz ng-include?

<ng-include src="'themes/midnight/index.html'"></ng-include> 

Jednakże, jeśli mogę użyć poniższy kod, widok pokazuje dwukrotnie:

<ng-include src="'themes/midnight/index.html'"></ng-include> 
<div ng-view></div> 

Na czym polega problem i jak mogę go rozwiązać?

+0

Co masz na myśli "To nie pokazuje żadnej rzeczy związanej z widokiem:"? – Ven

+0

Mam na myśli, że ng-view się nie pojawia. – ccoroom

+0

Czy używasz 'template-src' w twoich trasach? Nieco więcej kodu byłoby dostrzegalne :-). 'ng-view' jest do użycia view' $ routeProvider.when (, {template-url: '...'}); ' – Ven

Odpowiedz

29

Ten problem występuje z powodu opóźnionego utworzenia ng-view (przechodząc przez ng-include). W takim przypadku instancja $route jest również opóźniona, a $route przegapi zdarzenie zmiany lokalizacji (a routing nie zostanie w ogóle wykonany).

Aby to ominąć, należy wywołać funkcję $route aktualizacji na inicjalizacji aplikacji:

yourApp.run(['$route', function($route) { 
    $route.reload(); 
}]); 

Co więcej, to wystarczy tylko to $route jako zależność. Będzie to działać też:

yourApp.run(['$route', angular.noop]); 

Źródło: powiązanego issue on github.


Również sprawdzić ui-router, który jest przeznaczony specjalnie do czynienia z zagadnieniem zagnieżdżonych widoki.

+1

Zabawne, ale w rzeczywistości wystarczy wprowadzić $ route w głównym kontrolerze - to naprawiło problem dla mnie)) – KOHb

+1

@KOHb - jest to równoznaczne z deklarowaniem go jako zależności od aplikacji. –

+0

jak zadeklarować zależność dla aplikacji? Czy to masz na myśli: 'angular.module ('Main', [zależności tutaj])'? – KOHb

Powiązane problemy