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



收到此错误…

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"已被注册为一个控制器。

所以,事实证明你不能这样做。以上述方式注册控制器只适用于bootstrap。

但是如果你在config

中存放一个对$controllerProvider注册函数的引用,你就可以做到这一点
app.config(function ($controllerProvider) {
    app.lazy = {
        controller: $controllerProvider.register,
    };
}

,然后在你的控制器js中使用寄存器函数的引用来添加控制器。

var app = angular.module('application')
function registerController($scope) {
};
app.lazy.controller('registerController', ['$scope' ,registerController]);

相关内容

  • 没有找到相关文章

最新更新