当前位置: 首页 > 面试题库 >

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

麹正业
2023-03-14
问题内容

我目前有一个内置路由的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找不到

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


问题答案:

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

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

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

希望对您有所帮助!



 类似资料:
  • 问题内容: 我有一个现有页面,需要在其中添加一个可以动态加载的控制器的角度应用程序。 这是一个片段,它根据API和我发现的一些相关问题实现了关于如何完成操作的最佳猜测: JSFiddle。请注意,这是对实际事件链的简化,在以上各行之间有各种异步调用和用户输入。 当我尝试运行上述代码时,由$ compile返回的链接器将抛出:。如果我正确地理解了引导程序,那么它返回的注射器应该知道该模块,对吗? 相

  • 问题内容: 看来这个问题已经被问过几次了,但是没有正确的答案。 我的情况:我正在使用ajax(出于某种原因不使用角度路由模板)将模板(带有html和脚本)初始化为div。 index.html(主要) template.html(模板) 当我单击按钮时,它将文件加载到容器中,但是出现错误 错误:[ ng:areq ]参数’TempCtrl’不是函数,未定义 尽管已将其添加到应用控制器中。 我如何动

  • 问题内容: 模块路线: 控制器: HTML: 每次我单击超链接’‘时,“ BuildInfoController”将被调用两次。我在这里想念什么吗? 问题答案: 我遇到了同样的问题,并且似乎存在与路由有关的愚蠢错误。正在进行某种重定向。 为了解决这个问题,我在href中添加了一个斜杠,例如: 我希望它也会为您解决问题。

  • 问题内容: 是否可以基于路由组动态加载控制器,js文件和模板?伪代码不起作用: 我已经看到了很多这样的问题,但是没有一个问题基于路由组加载js文件/控制器。 问题答案: 我设法解决了受@ calebboyd,http : //ify.io/lazy-loading-in-angularjs/ 和http://weblogs.asp.net/dwahlin/archive/2013/05/22/dy

  • 问题内容: 在这种简化的情况下,我有两个文件:index.htm,lazy.htm。 index.htm: 懒汉 结果是一个错误:“参数’lazy’不是一个函数,未定义” 改用函数 懒汉 直到1.3版本beta 14才可以使用。在beta 15中,删除了全局控制器功能:https : //github.com/angular/angular.js/issues/8296 因此,现在,有什么更好的方

  • 问题内容: 我刚开始使用angularJS,并努力为我要做的事情找出合适的架构。我只有一个页面应用程序,但 URL始终应该保持不变 ;我不希望用户能够导航到根以外的任何路由。在我的应用中,有一个主要的div需要承载不同的视图。访问新视图时,我希望它接管主div中的显示。以这种方式加载的视图可以被丢弃或停留在DOM中,就像隐藏在DOM中一样- 我很想知道每个视图如何工作。 我提出了一个我想做的粗略的