2013-04-17 46 views
10

我想使用路線,但我總是希望使用相同的模板&控制器。我有這樣的路線:角 - 不同的路線,相同的模板/控制器,不同的加載方法

**a/:albumid** 

**i/:imageid** 

在我想要加載圖像陣列,並將它們添加到列表中的第一種情況。在第二種情況下,我想加載一個圖像並將其添加到列表中。

所以區別只在於數據加載。什麼是最有效的方法來做到這一點?

也有可能ng-show動畫嗎?像jQuery的slideDown?

回答

22

看看這篇文章,它描述了一個方式做你想要什麼:

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

我使用的技術,效果很好。

概括地說,像這樣的路由:

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

然後在你的控制器,你可以訪問$route.current.action,並做適當的事情。關鍵是當$ routeChangeSuccess火災創造你的一個功能,它所有的工作(本文稱之爲render()),然後調用該函數:

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

謝謝!你救了我的一天! –

0

我創建了一個超級簡單的指令來處理這個問題,允許路由更像是Rails或Codeigniter路由,其中​​控制器方法在路由定義中。方法名稱在routeProvider.when選項中設置,並且該指令在路由模板中設置。 參見:https://stackoverflow.com/a/22714634/250991

相關問題