所以我在我的awhome angularjs驱动的单页面应用程序中拥有我的全功能静态路由器,现在我得到了使某些路由动态化的任务.
直到现在我说我有以下参数路径:
> ^ / user /:userName
> ^ / product /:productName
> ^ / category /:categoryName
现在他们都需要响应路径^ /:slug,它会调用一些后端API来获取与该slug相对应的资源类型,最后将请求转发给具有特定解析的特定控制器templateUrl ,摘要和数据.
有什么想法吗?
(编辑:我想相同的功能可能与路由镜像(也就是透明前向)相同,其中内部的另一条路线比请求被触发,即使路线变化不公开可见.但我仍然无知是否有任何这样的可以在角度或ui路由器……)
解决方法:
我想到了.它不漂亮,但效果很好.
除了将上面的现有路由重命名为^ /:username(别名’profile’),^ /:productName(别名’products’)和^ /:categoryName(别名’category’)之外,我创建了一个新的通用路由/:slug with它的控制器ResolverController.后者必须在$stateProvider中首先声明.
ResolverController是以下功能:
function ($state, $stateParams, resource) {
switch (resource) {
case 'user':
$state.go('profile', {'username': $stateParams.slug});
break;
case 'product':
$state.go('products', {'productName': $stateParams.slug});
break;
case 'category':
$state.go('category', {'categoryName': $stateParams.slug});
break;
default:
// 404
break;
}
}
您可能想知道第三个参数资源.它由此状态的解析返回,并保存有关所请求的slug的资源类型的信息.