我在主页面中有两个主要部分:
我的问题是我想在用户点击按钮时在工作区中加载表单。
代码示例:
在我的视口中我有这个:
....
items : [{
title : 'Principal Menu',
layout : 'auto',
width : '15%',
height : '100%',
items : [{
xtype : 'button',
text : 'Load form',
id : 'loadIHM'
}]
},{
title : 'Espace de travail',
layout : 'auto',
width : '85%',
height : '100%',
id : 'workspace',
items : [{
html : '<b>Here to load Form</b>',
}]
}
....
在My Controller中我有:
loadUserManager: function() {
console.log('clicked');
var ws = Ext.getCmp('workspace');
//removeall -> ok
ws.removeAll();
var contro = this.getController('App.View.viewport');
//View is not null
var view = contro.views[0];
//add doesn't work!!
ws.add(view);
ws.doLayout();
}
最后我在开发人员工具(chrome)中得到了这个错误
Uncaught TypeError: Cannot read property 'floating' of undefined
任何人都可以帮助我。感谢。
答案 0 :(得分:1)
我觉得这个问题是因为你没有创建表单(会给它一个floating
属性)。
而不是像var view = contro.views[0]
尝试:var view = Ext.create('MyApp.view.MyFormPanel')
(但是您定义了formpanel视图)
答案 1 :(得分:0)
首先感谢@Geromino的回答,我发现了与您的代码相似的内容:
控制器中的更改:
loadUserManager: function() {
var ws = Ext.getCmp('workspace');
ws.removeAll();
var moduleController = this.getController('App.Controller.MainController');
moduleController.init();
var moduleView = Ext.create(moduleController.views[0]);
ws.add(moduleView);
ws.doLayout();
}
跳这帮助别人。