我需要在窗口中渲染网格组件(使用关闭动作销毁),这样我就需要创建新窗口和网格组件而不是隐藏和显示。
我的代码在第一次渲染时工作正常但在关闭窗口后,我无法再次创建它,在layout.js上出现问题
线:150 错误:类型不匹配。
************ getting issue in the below method and "dom" is undefined*********
moveItem : function(item, target, position) {
// Make sure target is a dom element
target = target.dom || target;
if (typeof position == 'number') {
position = target.childNodes[position];
}
target.insertBefore(item.el.dom, position || null); //dom is undefined
item.container = Ext.get(target);
this.configureItem(item);
this.childrenChanged = true;
}
************
My controller and view of(grid and window) i have attached .Please identify where i am going wrong
************
Code:
**************************************************************************
Window Controller
**************************************************************************
Ext.define('Adapt.controller.versionManager.verManWinCont', {
extend : 'Ext.app.Controller',
views : ['versionManager.verManWinView'],
init : function() {
this.control({
'verManWindow' : {
afterrender : this.verManWindowAfterRender
}
});
},
verManWindowAfterRender : function(win, options) {
});
**************************************************************************
window View
**************************************************************************
Ext.define('Adapt.view.versionManager.verManWinView' ,{
extend: 'Ext.window.Window',
requires: ['Adapt.controller.versionManager.versionCont','Adapt.view.versionManager.versionGrdView', 'Adapt.store.versionManager.versionStor'],
alias : 'widget.verManWindow',
constructor: function (config) {
this.callParent([config]);},
layout: 'fit',
closeAction :'destroy',
items: [{xtype: 'versionGrd'}],
autoShow :true,
width : 580,
height : 338,
closable : true,
plain : true
});
**************************************************************************
Grid Controller
**************************************************************************
Ext.define('Adapt.controller.versionManager.versionCont', {
extend : 'Ext.app.Controller',
views : ['versionManager.versionGrdView'],
stores : ['versionManager.versionStor'],
models : 'Adapt.model.versionManager.versionModl',
init : function() {
debugger;
this.control({
'versionGrd' : {
itemdblclick : this.versionGridDoubleClick,
afterrender : this.versionGridAfterRender
}
});
},
versionGridAfterRender : function(grid, options) {debugger;
}
});
**************************************************************************
Grid View
**************************************************************************
Ext.define('Adapt.view.versionManager.versionGrdView' ,{
extend: 'Ext.grid.Panel',
requires: ['Ext.grid.*','Adapt.view.versionManager.versionCreateView'],
alias : 'widget.versionGrd',
store: 'versionManager.versionStor',
columns:[
{header: 'Name', dataIndex: 'versionName', flex: 1},
{header: 'State', dataIndex: 'versionState', flex: 1}
],
constructor: function (config) {debugger;
this.callParent([config]);},
dockedItems: []
});
************************************************************************
(creating and showing in this handler)
In viewport Toolbar button handler(Controller)
this.getController('versionManager.verManWinCont');
this.getController('versionManager.versionCont');
new Adapt.view.versionManager.verManWinView();//.show();
感谢您的时间 vinod.P
答案 0 :(得分:2)
我有完全相同的问题,并通过将组件创建更改为factory functions来解决此问题。
原因是JavaScript中的对象通过引用传递,因此在下面的代码片段中,每个网格实例共享相同的列对象:
Ext.define('Adapt.view.versionManager.versionGrdView' ,{
extend: 'Ext.grid.Panel',
columns:[
{ header: 'Name', dataIndex: 'versionName', flex: 1 },
{ header: 'State', dataIndex: 'versionState', flex: 1 }
]
});
使用工厂函数方法,您可以创建网格视图:
Ext.define('Adapt.view.versionManager.versionGrdView' ,{
extend: 'Ext.grid.Panel',
initComponent: function() {
config = Ext.apply({}, { items: this.buildColumns() });
Ext.apply(this, Ext.apply(this.initialConfig, config));
this.callParent();
}
buildColumns: function() {
return [
{ header: 'Name', dataIndex: 'versionName', flex: 1 },
{ header: 'State', dataIndex: 'versionState', flex: 1 }
]
});
现在每个新实例都获得了自己的columns数组副本,这解决了部分配置被破坏的问题。作为一个很好的副作用,我也注意到应用程序的启动已经减少,因为我只使用工厂方法。
答案 1 :(得分:0)
检查发送到重新配置的列数组。