2017-08-24 4 views
1

モジュールを徐々にロードしようとしています。ファイルlazyModule.jsを作成し、oclazyLoadを使用してこのモジュールをロードします。私はこのlazyModule.jsでmyModule.jsの依存関係を定義すると、それはコンソールに次のエラーをスローしません:lazyloadedモジュール内の依存関係を含む中でinit ocLazyLoadエラーが発生しません

ocLazyLoadを初期化することができませんでしブートストラップ、中には見つかりませんモジュールを。 ocLazyLoadを使用するときは、常にng-app指令またはangular.boostrapを使用する必要があります。

lazyModule.js

define([ 
    'angular', 
    'components/infrastructure/myModule' 
], function(angular) { 
    'use strict'; 
    return angular.module('lazyModule', 
     [ 
      'myModule' 
     ]); 
}); 

myModule.js

define([ 
    'angular', 
    'ui-bootstrap', 
    'ocLazyLoad' 
], function initModule(angular) { 
    'use strict'; 

    angular.module('html.myModule', [ 'oc.lazyLoad']); 
}); 

これは私が遅延ロードlazyModule.js午前方法です:

initializeLazyModule: function(scope) { 
       var template; 
       try{ 
        // checking for existing module 
        angular.module('lazyModule'); 
        isLoaded=true; 
       }catch(err) { 
        isLoaded=false; 
       } 
       if (!isLoaded) { 
        return require(['apps/controlCenter/lazyModule'], function() { 
         $ocLazyLoad.inject('lazyModule'); 
         ControlCenterUtilities.checkAndApplyScope(scope); 
         $compile($('#my-module'))(scope); 

        }); 
    } 

    else { 
        return; 
    } 
} 

oc.lazyLoadモジュールの依存関係をmyModule.jsから削除すると、コンソールエラーが消えてしまいます。

しかし、oc.lazyloadモジュールの依存関係をmyModuleから削除するオプションはありません。これは、すでにoclazyloadをロードせずに自分のモジュールを直接消費している他のコンポーネントが破損するためです。

基本的には、oc.lazyloadモジュールが2回注入されているために起こります。 助けてください

+0

。 oc.lazyLoadがブートストラップ角度モジュールを使用して既にロードされている場合、新しい角度モジュール作成の角度依存性には含めないでください。 \t \t \t \t \t \t oc.lazyLoadは、新しいモジュールの依存関係に含まれるたびに、自身を初期化しようとします。 lazyModule.js – jass

答えて

0

私はこれに対する解決策を見つけました。

oc.lazyLoadが既にブートストラップ角度モジュールによってロードされている場合、新しい角度モジュール作成の角度依存性にoc.lazyLoadを含めてはなりません。 oc.lazyLoadは、新しいモジュール依存関係に含まれるたびに、自身を初期化しようとします。私はこの解決策を見つけた

lazyModule.js

define([ 
     'angular', 
     'components/infrastructure/myModule' 
    ], function(angular) { 
     'use strict'; 
     var dependentModules = [ 
     try { 
      angular.module('oc.lazyLoad'); 
     } catch (moduleError) { 
      dependentModules.push('oc.lazyLoad'); 
     } 
     return angular.module('lazyModule', dependentModules); 
    }); 
関連する問題