Загрузить форму в панель ExtJ 4 - PullRequest
1 голос
/ 29 марта 2012

У меня на главной странице две основные части:

  • в левой части: у меня есть панель с одной кнопкой (для упрощения).
  • в центральной части: у меня есть другая панель, которая содержит рабочее пространство.

Моя проблема в том, что я хочу загрузить форму в рабочей области, когда пользователь нажимает кнопку.

Образец кода:

в моем окне просмотра У меня есть это:

 ....
 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>',
    }]
}
 ....

и в моем контроллере у меня есть это:

    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 ]

1 голос
/ 29 марта 2012

У меня такое чувство, что проблема в том, что вы не создаете форму (что придает ей свойство floating).

Вместо того, чтобы ссылаться на него как: var view = contro.views[0]

Попробуйте: var view = Ext.create('MyApp.view.MyFormPanel') (как бы вы ни определяли свой внешний вид)

0 голосов
/ 02 апреля 2012

Во-первых, спасибо @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();
}

Надеемся, что это поможет другим.

...