我有一个包含不同类型页面的Angular应用程序,所有页面都在基本URL后面的slug中标识,所以像:
http://example.com/slug-a
http://example.com/slug-b
Slug a和b是不同类型的,需要在不同的视图中呈现。属于由slu a和b标识的对象的数据是从服务器获取的,Angular应用程序应该根据对象类型更改视图。
是否可以在ngRoute的$ routeProvider中处理此问题?我无法找到任何可以帮助我的文档,而且我确定我不是第一个尝试这个的文档。
简而言之:
基于服务器响应的不同视图。
答案 0 :(得分:0)
我认为你不能在路由器中这样做。
但您可以通过$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
}
});
答案 1 :(得分:0)
好的,我用一种不同的,更简单的方法解决了这个问题。 (不知道为什么我之前没有想到这一点)
$routeProvider.when('/:slug/', {
controller: 'SlugController',
template: '<div ng-include="template"></div>'
});
然后SlugController发出请求并通过设置$ scope.template加载正确的模板。在模板文件中,控制器附加到根元素。
简单但有效.. :))