将表格加载到面板ExtJ 4中

时间:2012-03-29 10:32:09

标签: extjs extjs4

我在主页面中有两个主要部分:

    左侧部分
  • :我的面板包含一个按钮(为了简化)。
  • 位于中间部分:我有另一个面板,其中包含工作区。

我的问题是我想在用户点击按钮时在工作区中加载表单。

代码示例:

在我的视口中

我有这个:

 ....
 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

任何人都可以帮助我。感谢。

2 个答案:

答案 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();
}

跳这帮助别人。