2015-06-16 6 views

risposta

0

Per quanto ne so non è possibile caricare solo la vista figlio. Ogni volta che viene caricata la vista di un bambino, la vista dei suoi genitori viene caricata anch'essa insieme ad essa.

+0

Devo nascondere la vista genitore dalla vista figlio –

10

Questo può essere fatto utilizzando il targeting per vista.

Supponiamo di avere una vista ui senza nome per il genitore nella radice. Quando il bambino è attivato, può assumere la vista senza nome del genitore usando viste mirate. Il punto di vista del bambino può mettere il proprio contenuto direttamente nella vista del genitore:

var app = angular.module("plunker", ['ui.router']) 
app.config(function($stateProvider) { 
    $stateProvider.state('parent', { 
    url: "", 
    template: "<a ui-sref='.child'>Go to child</a><h1>Parent</h1>" 
    }).state('parent.child', { 
    url: '/child', 
    views: { 
     "@": { 
     template: "<a ui-sref='^'>Back to parent</a><h1>child</h1>" 
     } 
    } 
    }) 
}) 

o potrebbe sostituire la vista padre con un modello che appena ha un nidificato ui-vista, che a sua volta si rivolge

var app = angular.module("plunker", ['ui.router']) 
app.config(function($stateProvider) { 
    $stateProvider.state('parent', { 
    url: "", 
    template: "<a ui-sref='.child'>Go to child</a><h1>Parent</h1>" 
    }).state('parent.child', { 
    url: '/child', 
    views: { 
     "@": { 
     template: "<small>parent ui-view overridden by parent.child</small> <div ui-view='child'/>" 
     }, 
     "[email protected]": { 
     template: "<a ui-sref='^'>Back to parent</a><h1>child</h1>" 
     } 
    } 
    }) 
}) 

Le viste con nome mirato sono "nomevista @ statename". La vista denominata "@" indica come target la vista denominata stringa vuota ("") in (@) stato root ("").

http://plnkr.co/edit/iff63xbNWCbK9MEPMb4f?p=preview

+1

Questa deve essere contrassegnata come risposta. Grazie per il tuo commento! –

8

Ho risolto questo problema avvolgendo la vista genitore con <div ui-view="">

Questo sovrascriverà la ui-view con il bambino quando si naviga ad uno stato infantile, altrimenti conterrà vista dello stato di brevetto.

+1

Questo è il modo corretto. Bello e semplice, fornisce una vista predefinita che viene sostituita dallo stato successivo. La risposta migliore è ottima ma per situazioni più complicate. – Wtower

+0

Questa è una soluzione così semplice ed elegante - dove non dovrebbe funzionare? – npr

+0

Spero che questo sia stato spiegato in modo più approfondito nella documentazione del router UI, perché la nidificazione non significa necessariamente avere componenti e sottocomponenti nel DOM tutto in una volta. –