0

收到此错误...

Error: [ng:areq] Argument 'registerController' is not a function, got undefined

尝试转换到 ui-router 状态时...

    .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”已注册为控制器。

4

1 回答 1

0

所以,事实证明你不能这样做。以上述方式注册控制器仅适用于引导程序。

但是,如果您在 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]);
于 2015-12-21T10:46:51.637 回答