有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中

Is there any way to load a controller from a file into ui-router $stateProvider?

本文关键字:ui 加载 路由器 stateProvider 文件 方法 任何 控制器 有没有      更新时间:2023-09-26

Javascript示例:

$stateProvider.state("stateA",{
            url:"^/statea",
            resolve:{
                //include or importing controller file here 
            },
            views:{
                "header":{
                    templateUrl:"templates/blocks/login/header.html",
                    //OR
                    controllerUrl: "/pathCtrl",
                    controller: nameController
                    }
                }
            }
    });

我希望能够在需要时快速导入控制器,而不必强制将它们包含在索引文件中。

使用eval和$injector服务是可能的,但我不推荐使用

eval(someFileContent);
var someCtrl = $injector.instantiate(SomeCtrlConstructor, {
  $scope: $scope
});

其中SomeCtrlConstructor是eval创建的构造函数的名称。这个解决方案有一些问题。其中最突出的是使用了这个。您可以将其作为self传递给子组件。就像$scope一样。

var someCtrl=$injector.instante(SomeCtrlConstructor{$scope:$scope,self:这个});

工作小提琴:https://jsfiddle.net/y552xgo7/