2011-03-15 67 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是一種事件驅動型語言,只有在事件發生後才能執行操作。這些事件在一些顯示元素被渲染後被觸發,如果你試圖在渲染它之前訪問這個組件,你將會有空對象。 – CrazyEnigma 2011-04-13 21:53:34

回答

0

您可以將<腳本>標記添加到部分視圖的末尾。這樣,在部分視圖完全呈現之前,腳本不會被分析/執行。

+0

我試過,但它也沒有工作。 – user629161 2011-03-15 19:34:07

+0

現在起作用了。我必須做出這樣的改變:autoLoad:{ url:'../SearchJob/SearchPanel', scripts:true },非常感謝... – user629161 2011-03-16 18:13:47

0

你可以在Ext.Window上使用afterrender事件嗎?

+0

是的,你可以使用after render事件,但after render被觸發太早了。 After render事件不會等待子元素被渲染。 – user629161 2011-03-15 20:26:44

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 2011-03-16 18:13:26

+0

只要在'win'的定義後面加上 - 請參閱上面的更新 – 2011-03-16 18:35:17

+0

對不起,您必須等到窗口呈現爲更新程序update事件添加偵聽器 - 正確的代碼現在顯示在上面 – 2011-03-16 18:41:41

相關問題