2013-04-17 13 views
10

Desidero utilizzare i percorsi, ma voglio sempre utilizzare lo stesso controller modello &. Ho percorsi come questo:Angolare - percorso diverso, stesso modello/controller, diverso metodo di caricamento

**a/:albumid** 

e

**i/:imageid** 

Nel primo caso voglio caricare una serie di immagini e aggiungerli ad una lista. Nel secondo caso voglio caricare una singola immagine e aggiungerla a una lista.

Quindi la differenza è solo nel caricamento dei dati. Qual è il modo più efficiente per farlo?

Inoltre è possibile animare ng-show? Qualcosa come diapositiva di jQuery?

risposta

22

consulta questo articolo, si descrive un modo per fare esattamente quello che vuoi:

http://www.bennadel.com/blog/2420-Mapping-AngularJS-Routes-Onto-URL-Parameters-And-Client-Side-Events.htm

Ho usato la tecnica, funziona bene.

In poche parole, qualcosa di simile per il routing:

$routeProvider 
    .when("https://stackoverflow.com/a/:album_id", { 
     action: "album.list" 
    }).when("/i/:imgid", { 
     action: "images.load" 
    }) 

Poi nel controller è possibile accedere $route.current.action e fare la cosa giusta. Il trucco è quello di creare una funzione in voi controller che fa tutto il lavoro (l'articolo lo chiama render()) e quindi chiamare tale funzione quando $ routeChangeSuccess incendi:

$scope.$on(
    "$routeChangeSuccess", 
    function($currentRoute, $previousRoute){ 
     // Update the rendering. 
     render(); 
    } 
); 
+1

Grazie! Mi hai salvato la giornata! –

0

ho creato un super semplice direttiva per gestire questa situazione che permette i percorsi devono essere più simili ai percorsi Rails o Codeigniter in cui il metodo del controller si trova nella definizione della rotta. Il nome del metodo è impostato nel routeProvider.quando le opzioni e la direttiva sono impostate nel modello per il percorso. Vedi: https://stackoverflow.com/a/22714634/250991

Problemi correlati