我試圖從視圖控制器內啓動模態窗口。考慮下面的代碼(也位於https://fiddle.sencha.com/#fiddle/1335):ExtJS6啓動模態窗口的ViewController
Ext.application({
name : 'Fiddle',
launch : function() {
Ext.define('Window1',{
extend: 'Ext.window.Window',
controller: 'winctrl',
xtype: 'window1',
initComponent: function(){
Ext.apply(this,{
title:'Window 1',
width: 400,
height: 400,
layout: {type:'hbox',pack:'center',align:'middle'},
items:[{
xtype: 'button',
text: 'Click Me!',
handler: 'btnClickMeClick'
}]
});
this.callParent(arguments);
}
});
Ext.define('Window2',{
extend: 'Ext.window.Window',
xtype: 'window2',
initComponent: function(){
Ext.apply(this,{
title: 'Window 2',
width: 200,
height: 200,
modal: true,
//renderTo: Ext.getBody(),
layout: {type:'hbox',pack:'center',align:'middle'},
items:[{
html: 'Modal Looks Odd',
listeners:{
afterrender: 'htmlRender'
}
}]
});
this.callParent(arguments);
}
});
Ext.define('WinCtrl',{
extend: 'Ext.app.ViewController',
alias:'controller.winctrl',
btnClickMeClick: function(){
this.dialog = this.getView().add({xtype:'window2'});
this.dialog.show();
},
htmlRender: function(){
console.log(this.dialog);
}
});
Ext.widget('window1').show();
}
});
我遇到的問題是,當車窗2推出的是模態才啓動它的觀點和我需要的窗口,是模式到整個文件。如果按原樣運行,htmlRender函數將正確記錄窗口2對象。我試圖在窗口2上設置renderTo: Ext.getBody()
;但是,渲染時無法訪問它的對象。在這種情況下,htmlRender會爲窗口2對象記錄一個「未定義」。
我需要一些幫助,允許窗口2呈現爲文檔的模態,同時允許我引用其對象。謝謝你的幫助。
我也試過。問題是,它將範圍從視圖控制器中取出。如果你把html配置放回窗口並聽取「afterrender」,它就不會在viewcontroller中找到htmlRender方法。 – user1532602
我能夠通過在窗口上設置renderConfig:Ext.getBody()來解決此問題,刪除了html項目上的偵聽器,甚至在窗口中添加了一個偵聽器:https://fiddle.sencha.com /#小提琴/ 133j – user1532602