2016-10-29 7 views
1

AngularJS 및 ocLazyLoad 플러그인을 사용하고 있습니다. 그리고 내 문제에 대한 해결책을 찾을 수 없습니다.ocLazyLoad 플러그인을 사용하여 구성 요소 및 기타 종속성로드

I는 (별도의 파일 componentCtrl.js에서) 컴퍼넌트 온 개 (component.js로 명명) 성분 및 제어기를 작성한 후, 난 (이 구분 된 파일 constants.js 너무 'S) 제어기에서 사용 된 상수를 갖는다. 그리고이 파일들을로드해야합니다. 내가 이런 식으로 사용할 때 :

loadPlugin: function ($ocLazyLoad) { 
        return $ocLazyLoad.load(
         { 
          files: ['../componentCtrl.js','../constants.js',../,'component.js'] 
         },... 

내 종속성이 정상적으로로드되었습니다. 하지만 더 많은 견해에서이 구성 요소가 필요합니다. 그런 다음이 코드를 반복해서 작성해야합니다. 지연로드 (lazy load) 기능을 사용하기 전에이 리소스 배열을 정의 할 수 있습니까? 나는 모듈이 때

은, 그것은

$ocLazyLoadProvider.config({ 
    modules: [{ 
    name: 'TestModule', 
    files: ['source1', 'source2',..., 'sourceN'] 
    }] 
}); 

간단하지만이 component.It의 가능이 플러그인에 대한 특수 모듈을 가지고 있지 않은거야?

답변

1

당신은 어떤 상수 또는 전역 변수를 정의하고이 같은이 당신의 모든 구성 요소 파일을 추가 할 수 있습니다 : 이제 간단하게 사용할

function getMeFoo(src) { 
    return ['$ocLazyLoad', 'SIMPLE_COMPONENTS', function ($ocLazyLoad, SIMPLE_COMPONENTS) { 
     if (SIMPLE_COMPONENTS[src]) { 
      return $ocLazyLoad.load(SIMPLE_COMPONENTS[src]); 
     } 
    }] 
} 

:

angular.module('app') 
     .constant('SIMPLE_COMPONENTS', { 
      comp1: ['../componentCtrl.js', '../constants.js', 'component.js'], 
      comp2: ['../componentCtrl2.js', '../constants2.js', 'component2.js'], 
      compfoo: ['../componentfoo.js', '../constantsbar.js', 'componentfoo.js'] 
     }); 

는 다음과 같은 당신의 국가 구성의 내부 함수를 정의 귀하의 주 구성에서 :

.state('app.foo', { 
    url: '/foo', 
    templateUrl: 'views/foo.html', 
    resolve: { 
     dep1: getMeFoo('comp1') 
    } 
}) 

.state('app.bar', { 
    url: '/bar', 
    templateUrl: 'views/bar.html', 
    resolve: { 
     dep1: getMeFoo('comp1'), 
     dep2: getMeFoo('comp2') 
    } 
});