2013-04-17 15 views
10

Chcę używać tras, ale zawsze chcę użyć tego samego kontrolera szablonu &. Mam trasy tak:Kątowa - inna trasa, ten sam szablon/kontroler, inna metoda ładowania

**a/:albumid** 

i

**i/:imageid** 

W pierwszym przypadku chcę, aby załadować tablicę obrazów i dodać je do listy. W drugim przypadku chcę załadować pojedynczy obraz i dodać go do listy.

Różnica polega tylko na ładowaniu danych. Jaki jest najskuteczniejszy sposób na zrobienie tego?

Czy możliwe jest również animowanie programu ng-show? Coś jak slideDown firmy jQuery?

Odpowiedz

22

Sprawdź ten artykuł, opisuje sposób to zrobić dokładnie to, co chcesz:

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

Użyłem techniki, to działa dobrze.

W skrócie, coś jak to do routingu:

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

Następnie w kontrolerze można uzyskać dostęp $route.current.action i zrobić odpowiednie rzeczy. Sztuką jest, aby utworzyć funkcję w was kontroler, który wykonuje całą pracę (artykuł nazywa go render()), a następnie wywołać tę funkcję, gdy $ routeChangeSuccess pożary:

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

Dziękujemy! Uratowałeś mój dzień! –

0

I stworzył bardzo prosty dyrektywę obsłużyć to, że pozwala trasy, które mają być bardziej podobne do tras Railsów lub Codeigniter, gdzie metoda kontrolera znajduje się w definicji trasy. Nazwa metody jest ustawiona w routeProvider. Gdy opcje i dyrektywa są ustawione w szablonie trasy. Zobacz: https://stackoverflow.com/a/22714634/250991

Powiązane problemy