2013-05-21 20 views
16

Quando si tenta di aggiungere uno ng-view all'interno di ng-include, non accade nulla. per esempio. nel codice seguente, quando temi/midnight/index.html detiene una ng-view, senza vista è resa:Come ng-view all'interno di ng-include?

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

Tuttavia, se uso il codice qui sotto, la visualizzazione mostra due volte:

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

Qual è il problema e come posso risolverlo?

+0

Che cosa intendi con "Ciò non mostra alcuna vista correlata:"? – Ven

+0

Voglio dire ng-view non appare. – ccoroom

+0

Stai usando 'template-src' nei tuoi percorsi? Un po 'più di codice sarebbe apprezzabile :-). 'ng-view' è per uso view' $ routeProvider.when (, {template-url: '...'}); ' – Ven

risposta

29

Questo problema si verifica a causa di un'istanza ritardata di ng-view (passando attraverso ng-include). In tal caso anche l'istanziazione $route viene ritardata, e $route salterà l'evento di cambio di posizione (e il routing non verrà eseguito affatto).

Per bypassare questo, richiamare la funzione $route aggiornamento inizializzazione dell'applicazione:

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

ulteriormente più, è sufficiente includere solo $route come dipendenza. Ciò funzionerà anche:

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

Fonte: il relativo issue on github.


controllare anche ui-router, che è destinato a trattare specificamente con l'emissione di vista nidificate.

+1

Divertente, ma in realtà è abbastanza per iniettare $ route nel controller principale - questo ha risolto il problema per me)) – KOHb

+1

@KOHb - equivale a dichiararlo come una dipendenza per l'app. –

+0

come si dichiara la dipendenza per l'app? E 'questo che intendi: 'angular.module (' Main ', [dependencies here])'? – KOHb

Problemi correlati