我在代碼中添加了一個監聽器,如:約ExtJS的afterLayout
listen: {
afterLayout: function(){
doSomething...
}
}
的功能是呈現HTML標籤。但是當頁面加載時它不起作用。我需要強制渲染頁面,比如改變瀏覽器的大小才能工作。我想知道爲什麼。 「afterLayout」應該在頁面加載正確後自動工作?或者我錯過了什麼?
我在代碼中添加了一個監聽器,如:約ExtJS的afterLayout
listen: {
afterLayout: function(){
doSomething...
}
}
的功能是呈現HTML標籤。但是當頁面加載時它不起作用。我需要強制渲染頁面,比如改變瀏覽器的大小才能工作。我想知道爲什麼。 「afterLayout」應該在頁面加載正確後自動工作?或者我錯過了什麼?
我覺得你的事件搜索AfterRender階段。 僅當窗口大小發生變化而不是負載時纔會觸發Afterlayout。 afterrender事件匹配後加載感興趣的組件的佈局。 所以你應該試試這個:
listen: {
afterrender: function(){
doSomething...
}
}
如果必須調用同一個函數在所有情況下調用它AfterRender階段和afterlayout
我認爲你的問題可以解決viewport。 將您的應用程序包裝在此組件中。視口會聽窗口大小的變化,並自動重新大小它的子元素(應用程序)
您使用的是錯誤的配置。取而代之的listen: {
使用listeners: {
下面是一個例子:https://fiddle.sencha.com/#fiddle/16gu
Ext.application({
name : 'afterRender Test',
launch : function() {
Ext.create('Ext.container.Container', {
renderTo: Ext.getBody(),
listeners: {
afterRender: function() {
this.update('<div style="width:300px; background-color:red; padding:10px;">Added via afterRender listener</div>');
}
}
});
}
});
感謝您的提醒。其實它是我的代碼中的聽衆。我在這裏犯了一個錯誤。 – nasuf
版本的ExtJS的? –
@ Mr.George 4.1.x我忘了確切的版本,因爲代碼是公司的。 – nasuf