我想使用路由,但我总是想使用相同的模板和控制器。我有这样的路线:
**a/:albumid**
和
**i/:imageid**
在第一种情况下,我想加载图像数组并将它们添加到列表中。在第二种情况下,我想加载单个图像并将其添加到列表中。
所以区别仅在于数据加载。最有效的方法是什么?
也可以为 ng-show 制作动画吗?像jQuery的slideDown这样的东西?
我想使用路由,但我总是想使用相同的模板和控制器。我有这样的路线:
**a/:albumid**
和
**i/:imageid**
在第一种情况下,我想加载图像数组并将它们添加到列表中。在第二种情况下,我想加载单个图像并将其添加到列表中。
所以区别仅在于数据加载。最有效的方法是什么?
也可以为 ng-show 制作动画吗?像jQuery的slideDown这样的东西?
查看这篇文章,它描述了一种完全按照您的意愿行事的方法:
我用过这个技术,效果很好。
简而言之,类似这样的路由:
$routeProvider
.when("/a/:album_id", {
action: "album.list"
}).when("/i/:imgid", {
action: "images.load"
})
然后在您的控制器中,您可以访问$route.current.action
并执行适当的操作。诀窍是在您的控制器中创建一个函数来完成所有工作(文章称它为render()
),然后在 $routeChangeSuccess 触发时调用该函数:
$scope.$on(
"$routeChangeSuccess",
function( $currentRoute, $previousRoute ){
// Update the rendering.
render();
}
);
我创建了一个超级简单的指令来处理这个问题,它允许路由更像 Rails 或 Codeigniter 路由,其中控制器方法位于路由定义中。方法名称在 routeProvider.when 选项中设置,指令在路由模板中设置。请参阅:https ://stackoverflow.com/a/22714634/250991