javascript – AngularJS – 使用UI-Router进行动态路由

所以我在我的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的资源类型的信息.

上一篇:javascript – Angular 2 Routes – 是否可以使用ngFor从路由创建动态routerLinks?


下一篇:php – 将Laravel 5方法注入与其他参数一起使用