2017-08-24 33 views
1

我試圖逐步加載模塊。我創建了一個文件'lazyModule.js',並使用oclazyLoad加載這個模塊。當我在這個lazyModule.js定義myModule.js依賴,灑在控制檯以下錯誤:無法初始化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; 
    } 
} 

雖然,當我從myModule.js中刪除oc.lazyLoad模塊的依賴項時,控制檯錯誤消失。

但我沒有選擇從myModule中刪除oc.lazyload模塊依賴項,因爲它會中斷一些其他組件直接消耗我的模塊而不需要加載oclazyload。

它基本上是因爲oc.lazyload模塊被注入兩次而發生的。 請幫忙

+0

我已經找到解決這個。 oc.lazyLoad不應包含在新角度模塊創建的角度依賴性中 \t \t \t如果oc.lazyLoad已通過引導角度模塊加載。 \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); 
    });