【问题标题】:Angular controller not loading using OcLazyLoad and ngRouteAngular 控制器未使用 OcLazyLoad 和 ngRoute 加载
【发布时间】:2015-04-06 09:26:49
【问题描述】:

我有一个应用程序,该应用程序最初加载了大量脚本,并且随着开发的进行,该列表正在增长。我想在需要时延迟加载包含控制器的脚本。我将 OcLazyLoad 和 ngRoute 一起用于路由选项(我确实尝试了 ui-route,它实际上具有相同的最终结果,但导致了其他应用程序问题)。延迟加载和路由工作正常,脚本和视图仅在需要时加载,但问题是控制器没有被加载(参数'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 文件正在按预期延迟加载。任何帮助都会很棒。

谢谢。

【问题讨论】:

    标签: javascript angularjs lazy-loading ngroute


    【解决方案1】:

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

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

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

    这一定能解决你的问题。

    【讨论】:

    • 是的,你是完全正确的,我的主要疏忽......这就是你看屏幕太久的结果!感谢您的帮助。
    • 有什么方法可以使用 app 变量吗?如果我必须将它更改为 angular.module 到许多文件,那将是浪费时间.......
    猜你喜欢
    • 2016-03-28
    • 2014-12-28
    • 2017-03-29
    • 2017-05-02
    • 2015-12-01
    • 2017-10-24
    • 2015-08-30
    • 2018-12-11
    • 2016-12-14
    相关资源
    最近更新 更多