2011-03-15 3 views
2

ASP.NET MVC 애플리케이션이 있습니다. 응용 프로그램에는 단추가있는 페이지가 있습니다. 버튼을 클릭하면 부분 뷰가 창에 렌더링됩니다 (아래 참조). 보기 내에서 콤보 상자가 있고보기가 렌더링 된 후 콤보 상자를로드해야합니다. win.show() 후에 js를 호출하려고했으나 콤보를 렌더링하는 데 사용 된 텍스트 상자가 부분보기 안에 있기 때문에 작동하지 않습니다. js에 언제 전화해야합니까? 이에 관한 도움은 매우 감사하겠습니다. 감사!부분 뷰를로드 할 때 javascript 호출

var win; 
if (!win) { 
    win = new Ext.Window({ 
     layout: 'fit', 
     width: 750, 
     height: 630, 
     closeAction: 'hide', 
     plain: true, 
     autoLoad: { 
      url: '../SearchJob/SearchPanel' 
     }, 
     buttons: [{ 
      text: 'Submit', 
      handler: function() { } 
     }, { 
      text: 'Close Me', 
      handler: function() { 
       win.hide(); 
      } 
     }] 
    }); 
} 
win.show(this); 

} 
+0

자신이 사건의 이해에 몰입하기 위 ... 편집이 비록 실행하는 이벤트 핸들러를 설정해야합니다 , 특히 EXT에서 JS. Javascript는 이벤트 중심 언어이므로 이벤트가 발생한 후에 만 ​​작업을 수행 할 수 있습니다. 이러한 이벤트는 일부 표시 요소가 렌더링 된 후에 시작됩니다. 렌더링되기 전에이 구성 요소에 액세스하려고하면 null 객체가 표시됩니다. – CrazyEnigma

답변

0

당신은 부분보기의 끝으로 < 스크립트> 태그를 추가 할 수 있습니다. 그렇게하면 부분 뷰가 완전히 렌더링 될 때까지 스크립트가 파싱/실행되지 않습니다.

+0

나는 그것을 시도했지만 역시 작동하지 않았다. – user629161

+0

이제 효과가있었습니다. 이 변경을해야만했습니다 : autoLoad : { url : '../SearchJob/SearchPanel', scripts : true } 고마워 ... – user629161

0

Ext.Window에서 Afterrender 이벤트를 사용할 수 있습니까?

+0

예 후 렌더링 이벤트를 사용할 수 있지만 After render가 실행됩니다. 너무 이른. AfterRend 이벤트는 자식 구성 요소가 렌더링 될 때까지 기다리지 않습니다. – user629161

0

부분보기 내용을로드 할 때 autoLoad를 사용하기 때문에 부분보기 내용으로 응답을 받고 구성 요소/마크 업과 함께 업데이트 될 때까지 기다려야합니다. 윈도우의 업데이트 프로그램의 update 이벤트 ...

win.on('render', function(component) { 
    win.getUpdater().on('update', function(el, response) { 
      // Load Combo 
    }, win, {single:true}); 
}); 

[편집] 한 번만

var win; 
if (!win) { 
    win = new Ext.Window({ 
     layout: 'fit', 
     width: 750, 
     height: 630, 
     closeAction: 'hide', 
     plain: true, 
     autoLoad: { 
      url: '../SearchJob/SearchPanel' 
     }, 
     buttons: [{ 
      text: 'Submit', 
      handler: function() { } 
     }, { 
      text: 'Close Me', 
      handler: function() { 
       win.hide(); 
      } 
     }] 
    });  
    win.on('render', function(component) { 
     win.getUpdater().on('update', function(el, response) { 
       // Load Combo 
     }, win, {single:true}); 
    }); 
} 
win.show(this); 
+0

나는 이것을 작동시키지 않는다. 나는 아직도 EXTJS에 익숙하지 않은데,이 코드를 어디에 둘 것인지 알려 주시면 매우 감사하겠습니다. – user629161

+0

그냥'win'의 정의 바로 뒤에 넣으십시오. 위의 업데이트를 참조하십시오. –

+0

죄송합니다. 윈도우가 렌더링 될 때까지 기다려야 만 updater update 이벤트에 대한 리스너를 추가해야합니다. –

관련 문제