1

いくつかの条件に基づいて実行時にロードしようとしているモジュールがいくつかあります。現在、ocLazyLoadモジュールを使用していますが、ロードされたモジュールがまったく機能していません。すべてが正常に読み込まれ、スローされるエラーはありません。

最初にメインモジュールを宣言します

var app = angular.module('myApp',['oc.lazyLoad'])

app.config(['$ocLazyLoadProvider',function(){
    modules : [{
       name : 'mod1',
       files : [CDN-Path]
     }]
}]);

そして、コントローラーのどこかに

app.controller('c',function($ocLazyLoad){

     $ocLazyLoad.load('mod1').then(function(){
           console.log('module loaded!');
     });
})

解決されたプロミス内で私が実際に行っていることは、新しい状態を ui-router に登録し、その状態内で で定義されたディレクティブの一部を使用することですmod1が、それらは単に機能しません。モジュールのロード後に実行する必要がある初期化はありますか?

4

1 に答える 1

2

以下のように、ビューの前に任意のモジュール/ディレクティブ/コントローラー/javascript( jquery も) を遅延ロードできます。

angular.module('app', ['ui.router', 'oc.lazyLoad']).config(['$stateProvider', '$ocLazyLoadProvider', function ($stateProvider, $ocLazyLoadProvider) {
        $ocLazyLoadProvider.config({
            modules : [{
                    name : 'TestModule',
                    files : ['js/TestModule.js', 'js/AppCtrl.js']
                }
            ]
        });

        $stateProvider.state('index', {
            url : "/", // root route
            views : {
                "lazyLoadView" : {
                    controller : 'AppCtrl', // This view will use AppCtrl loaded below in the resolve
                    templateUrl : 'partials/main.html'
                }
            },
            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('TestModule');
                    }
                ]
            }
        });
    }
]);

https://oclazyload.readme.io/docs/with-your-router

遅延ロードされcontrollerたPlunker サンプルを編集: ui-bootstrap https://plnkr.co/edit/pUq3b1TDkwdGQOftcWDL?p=preview

于 2016-03-29T16:31:15.290 に答える