为窗口创建一个视图控制器我会在这里建议一些东西。您可以创建窗口并附加与该窗口关联的所有组件。此示例代码将看起来像。
Ext.define("App.view.NewWin.NewWint", {
extend: "Ext.window.Window",
alias: 'widget.newWindow',
layout: 'fit',
scrollable: true,
layout: 'fit',
modal: true,
requires: [
'App.view.NewWin.NewWintController'
],
controller: 'newWindowController',
initComponent: function() {
var me = this,
// Code for attributes if in case any required
me.tbar = [
// Code for TBar
];
me.items = [{
// Code for WindowItem
}];
me.buttons = ['->', { // some code for tbar
text: Save,
name: "Save",
hidden: me.readOnly,
disabled: true
}, {
text: Cancle,
name: "cancel"
}];
me.callParent(arguments);
}
})
由于我们在指定窗口定义的控制器newWindowController
那么我们可以分开使用的控制器。示例代码将遵循这一
Ext.define('App.view.NewWin.NewWintController', {
extend: 'Ext.app.ViewController',
alias: 'controller.newWindowController',
init: function() {
var me = this;
me.control({
// You can write the control for your component which is in window.
});
},
/*
* The code below will work on click of save.
*/
onSaveBtns: function(btn) {
var me = this,
// You code for save
},
onClose: function(btn) {
var window = btn.up("window");
window.close();
}
});
现在,第二部分是如何让一个窗口面板的孩子,AFTE有点研究,我发现这个>Panel as item你可以试试这个概念。我创造了一个小提琴,你可以在Fiddle附近玩。
注意在你的情况,而不是建立内部面板窗口中,你可以直接使用xtype : 'newWindow'
你可以尝试是否可以绑定一个视图控制器,以两种不同的观点 - 你的主要观点和窗户。除了那个我不确定的解决方法是否会起作用外,没有,没有。一个窗口是一个浮动组件,所以它通过定义保持在通常的组件层次结构之外。另一种可能性是使用一个[Controller](http://docs.sencha.com/extjs/6.2.0/classic/Ext.app.Controller.html),它对你的应用程序是全局的。 – Alexander