一尘不染

在angularjs $ routeProvider中动态加载控制器

angularjs

我目前有一个内置路由的AngularJS应用,它与静态controller属性分配完美配合。但是我真正想做的是为控制器分配不同的路由:

$routeProvider
 .when("/Dashboards/:dashboardName",{
    templateUrl:function(params) {
                 return "Dashboards/" + params.dashboardName;
                //some ASP.NET MVC calls to return partial views (this part works)
        }
  })

我想做的是在controller这里对我的财产做同样的事情,例如:

$routeProvider
 .when("/Dashboards/:dashboardName",{
       templateUrl:function(params) {
             return "Dashboards/" + params.dashboardName;
            //some ASP.NET MVC calls to return partial views (this part works)
           },
       controller: function(params) {
             return params.dashboardName+"Controller"; (this part DOESN'T work)
           }
  })

但似乎我得到一个错误,说paramsProvider找不到

所以有什么办法可以在路由配置中动态加载控制器功能名称?


阅读 170

收藏
2020-07-04

共1个答案

一尘不染

使用angular ui-router可以做到这一点。

ui-router允许您指定“ controllerProvider”以指定用于提供控制器的功能。因此,解决方案如下所示:

$stateProvider
.state("/Dashboards/:dashboardName",{
   templateUrl:function($stateParams) {
         return "Dashboards/" + $stateParams.dashboardName;
       },
   controllerProvider: function($stateParams) {
         return $stateParams.dashboardName+"Controller";
       }
  })

希望对您有所帮助!

2020-07-04