Javascript AngularJS-带UI路由器的动态路由

Javascript AngularJS-带UI路由器的动态路由,javascript,angularjs,routes,url-routing,angular-ui-router,Javascript,Angularjs,Routes,Url Routing,Angular Ui Router,因此,我在我令人敬畏的angularjs支持的单页应用程序中有了功能齐全的静态路由器,现在我的任务是使某些路由动态化 假设到目前为止,我有以下参数化路径: ^/user/:用户名 ^/product/:productName ^/category/:categoryName 现在,他们都需要响应路径^/:slug,该路径将调用某个后端API,以获取与该slug对应的资源类型,并最终将请求转发给特定的控制器,以及其特定的解析,模板URL,摘要和数据 有什么想法吗 (编辑:我想路由镜像(也称为

因此,我在我令人敬畏的angularjs支持的单页应用程序中有了功能齐全的静态路由器,现在我的任务是使某些路由动态化

假设到目前为止,我有以下参数化路径:

  • ^/user/:用户名
  • ^/product/:productName
  • ^/category/:categoryName
现在,他们都需要响应路径
^/:slug
,该路径将调用某个后端API,以获取与该slug对应的资源类型,并最终将请求转发给特定的
控制器
,以及其特定的
解析
模板URL
摘要
数据

有什么想法吗



编辑:我想路由镜像(也称为透明转发)也可以实现同样的功能,在路由镜像中,内部会触发请求之外的另一条路由,即使路由更改不是公开可见的。但我仍然不知道在angular或ui路由器中是否可能实现这些功能…)我想出来了。虽然不漂亮,但效果很好

除了将上面的现有路由重命名为
^/:username
(别名“profile”)、
^/:productName
(别名“products”)和
^/:categoryName
(别名“category”),我还创建了一个新的通用路由
/:slug
,它带有控制器
解析控制器
。后者必须首先在
$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;
  }
}
您可能想知道第三个参数
resource
。它由该状态的解析返回,并保存有关请求的slug的资源类型的信息