我有一个具有不同类型页面的角应用,所有这些都在基本URL之后通过slug识别,因此如下:
http://example.com/slug-a
http://example.com/slug-b
slug a和b具有不同的类型,需要以不同的视图渲染。从服务器中获取了slug a和b标识的对象的数据,并且角度应用程序应该根据对象类型更改视图。
是否可以在Ngroute的$ RouteProvider中处理此问题?我找不到任何有助于我的文档,而且我敢肯定我不是第一个尝试这个的文档。
所以,简而言之:
- 客户端请求slug a => Angular请求从Server =>带有模板A。 的Angular Loads Controllera
- 客户端请求slug b => Angular请求从Server =>带有模板B 的Angular Loads Controllerb
基于服务器响应的不同视图。
我认为您不能在路由器中执行此操作。但是您可以通过$location
服务将用户重定向到其他位置。像这样
// somewhere inside your controller
var promise = loadData().then(data => {
if (data.slugA) {
$location('path_to_slugA');
}
else if (data.slugB) {
$location('path_to_slugB');
}
else {
// do something else
}
});
好吧,我已经使用了另一种和更简单的方法解决了它。(不知道为什么我以前没有弄清楚)
$routeProvider.when('/:slug/', {
controller: 'SlugController',
template: '<div ng-include="template"></div>'
});
然后,SlugController通过设置$ scope.template来提出请求并加载正确的模板。在模板文件中,连接到根元素的控制器。
简单但有效..:)