角度控制器未使用OcLazyLoad和ngRoute加载

Angular controller not loading using OcLazyLoad and ngRoute

本文关键字:ngRoute 加载 OcLazyLoad 未使用 控制器      更新时间:2023-09-26

我有一个应用程序,它最初加载了大量脚本,随着开发的进行,列表越来越多。我想在需要时延迟加载包含控制器的脚本。我使用OcLazyLoad和ngRoute作为路由选项(我确实尝试了ui路由,它实际上有相同的最终结果,但导致了其他应用程序问题)。延迟加载和路由工作正常,只有在需要时才加载脚本和视图,但问题是没有加载控制器(参数"caseReviewController"没有),所以控制器似乎不存在。

这是我的app.js文件中的一个简单版本。。。

var app = angular.module('dashboard', ['oc.lazyLoad', 'ngRoute', 'LocalStorageModule']);

        app.config(function ($ocLazyLoadProvider, $routeProvider, localStorageServiceProvider) {

                $ocLazyLoadProvider.config({
                        loadedModules: ['dashboard'], modules: [
                            {
                                name: 'caseReview',
                                files: ['js/controllers/case-review.js']
                            }
                        ]
                });

                $routeProvider
                        //other routes here...
                        .when('/case-review', {
                            templateUrl: 'views/case-review.html',
                            controller: 'caseReviewController',
                            resolve: {
                                loadModule: ['$ocLazyLoad', function ($ocLazyLoad) {
                                    return $ocLazyLoad.load('caseReview');
                                }]
                            }
                        })
});

在单独的case-review.js文件中,我有一个简单的控制器

app.controller('caseReviewController', function($scope, localStorageService, $route){
    //do stuff
});

未找到或执行此控制器,但视图和js文件正按预期延迟加载。任何帮助都会很棒。

谢谢。

在单独的case-review.js中,必须获得app的引用。

angular.module('dashboard').controller('caseReviewController', function($scope, localStorageService, $route){
    //do stuff
});

正如您所提到的,它在单独的文件中,它可能不知道app变量。最好在单独的文件中获得角度模块的参考。

这一定能解决你的问题。