有没有办法将控制器从文件加载到ui-router $ stateProvider?

时间:2016-05-19 17:22:49

标签: javascript angularjs angular-ui-router

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

                    }
                }
            }
    });

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

1 个答案:

答案 0 :(得分:0)

可以使用eval和$ injector服务,但我不推荐它。但是你走了:

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

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

var someCtrl = $ injector.instantiate(SomeCtrlConstructor,{   $ scope:$ scope,   自我:这个 });

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