2017-04-14 21 views
0

조건부로 requires에 네임 스페이스를 추가해야한다는 요구 사항이 있습니다.Sencha - 조건부로 namesapce를 입력해야합니다.

아래 예제에서 특정 조건에 'views.popupgrid'네임 스페이스를 추가하고 싶습니다. 현재 항상로드됩니다.

requires: ['Ext.window.MessageBox','views.popupgrid','user.MyUser' ] 

답변

1

조건부 종속성은 Sencha 툴 체인에서 지원되지 않습니다. 당신이 당신의 선택

requires:[ 
    (location.hash=='#test')?'testpopup':'normalpopup' 
] 

의 텍스트 편집기에서 쓸 수있을 것이이 컴파일되지 않은 버전에서 작동합니다 동안, 엽차 Cmd를 올바르게 컴파일 할 수 없을 것입니다 및 오류를 던질 것입니다.

따라서 Sencha Architect는이 구문을 지원하지 않습니다.

표준 준수를 유지하면서 할 수있는 것은 Ext.Loader.loadScript입니다. 같은 :

Ext.define('MyForm',{ 
    extend: 'Ext.form.Panel' 
    initComponent:function() { 
     var me = this; 
     me.callParent(arguments); 
     if(x==3) Ext.Loader.loadScript({ 
      url:'MyCustomFormComponent.js', 
      onLoad:function(){ 
       me.add({ 
        xtype:'mycustomformcomponent' 
       }); 
      }) 
     }); 
    } 
}) 

이 경우에 유의하시기 바랍니다 당신은 항상 종속성이 툴체인에 의해 해결 될 수 없기 때문에 app.js 축소 된 함께 MyCustomFormComponent.js을 제공해야합니다. 또한 연결에 따라 리소스가로드되고 구성 요소가 양식에 추가되기 전에 눈에 띄는 지연이있을 수 있습니다.

특히 앱을 단일 축소 된 자바 스크립트 파일로 제공하려는 경우 (예 : Sencha Cmd 사용) 항상 의존성을로드하는 것이 더 빠르고 부드럽게 수행됩니다.

+0

최상의 답을 찾지 못한이 솔루션은 .. –