Angularjs 延迟加载的控制器在转换到状态时会导致错误

Angularjs 延迟加载的控制器在转换到状态时会导致错误,angularjs,angular-ui-router,angularjs-controller,oclazyload,Angularjs,Angular Ui Router,Angularjs Controller,Oclazyload,收到此错误 Error: [ng:areq] Argument 'registerController' is not a function, got undefined 尝试转换到ui路由器状态时 .state('register', { url: "/register", templateUrl: "App/components/register/registerView.html", data: { pageTitle: 'Regi

收到此错误

Error: [ng:areq] Argument 'registerController' is not a function, got undefined
尝试转换到ui路由器状态时

    .state('register', {
        url: "/register",
        templateUrl: "App/components/register/registerView.html",
        data: { pageTitle: 'Register', specialClass: 'gray-bg' },
        controller: "registerController",
        resolve: { // Any property in resolve should return a promise and is executed before the view is loaded
            loadMyCtrl: ['$ocLazyLoad', function ($ocLazyLoad) {
                // you can lazy load files for an existing module
                return $ocLazyLoad.load(['App/components/register/registerController.js']);
            }]
        }
    })
将检索并运行延迟加载的文件,此处仅供参考

var app = angular.module('application')

function registerController($scope) {
    $scope.test = "test";
};

app.controller('registerController', registerController);
当状态尝试解析异常时引发异常

controller: "registerController",

财产。但我知道延迟加载的代码已经在此时运行,并且“registerController”已经注册为控制器

所以,事实证明你不能这么做。以上述方式注册控制器仅在引导时有效

但是,如果在config中隐藏对$controllerProvider寄存器函数的引用,则可以执行此操作

app.config(function ($controllerProvider) {
    app.lazy = {
        controller: $controllerProvider.register,
    };
}
然后在控制器js中,使用对register函数的引用添加控制器

var app = angular.module('application')

function registerController($scope) {

};

app.lazy.controller('registerController', ['$scope' ,registerController]);