【问题标题】:AngularJS - Dynamic routing with UI-RouterAngularJS - 带有 UI-Router 的动态路由
【发布时间】:2013-10-24 17:45:01
【问题描述】:

所以我在我出色的 angularjs 驱动的单页应用程序中拥有了功能齐全的静态路由器,现在我的任务是使某些路由动态化。

说到目前为止我有以下参数路径:

  • ^/user/:userName
  • ^/product/:productName
  • ^/category/:categoryName

现在他们都需要响应路径^/:slug,这将调用一些后端 API 以获取与该 slug 对应的资源类型,最后将请求转发到特定的 controller 及其具体resolvetemplateUrlabstractdata

有什么想法吗?


(EDIT:我猜路由镜像(又名透明转发)可能会实现相同的功能,其中 internally 触发了请求之外的另一条路由,即使该路由更改不是公开可见的。但我仍然不知道在角度或 ui-router 中是否有任何可能......)

【问题讨论】:

    标签: javascript angularjs routes url-routing angular-ui-router


    【解决方案1】:

    我想通了。它不漂亮,但效果很好。

    除了将上面的现有路由重命名为^/:username(别名'profile')、^/:productName(别名'products')和^/:categoryName(别名'category')之外,我还创建了一个新的通用路由/:slug它的控制器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;
      }
    }
    

    您可能想知道第三个参数resource。它由该状态的解析返回,并保存有关请求的 slug 的资源类型的信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多