Sencha建筑师弹出窗口

时间:2013-12-06 09:47:44

标签: javascript extjs sencha-architect

我有一个网格,我尝试使用类型为“Ext.form.panel”的id“popup”打开视图,以编辑网格中的单个条目。

我最终得到了以下内容:

onGridpanelSelect: function(rowmodel,record,index,e0pts) {
    if(Ext.getCmp('popup')) var sample = Ext.getCmp('popup');
    else var sample = Ext.create('MyApp.view.popup');
    sample.update(record.data);
    // Ext.Viewport.add(sample);
    Ext.Viewport.setActiveItem(sample);
}

但Firefox告诉我,Ext.Viewport.add和Ext.Viewport.setActiveItem都不是函数。他到底试图告诉我什么?

TypeError: Ext.Viewport.add is not a functionTypeError: Ext.Viewport.setActiveItem is not a function,具体取决于评论是否存在)

1 个答案:

答案 0 :(得分:3)

在Sencha Touch中,Ext.Viewport是单身人士,但在ExtJS中则不行。 add不是静态方法,因此您只能从Viewport实例调用它。

如果您已经创建了一个视口,则可以使用组件查询获取对它的引用:

var viewport = Ext.ComponentQuery.query('viewport')[0];
// Now, we've got an instance!
viewport.add( ... );

现在,考虑到组件的名称(弹出窗口),我不打算尝试将其添加到视口中,而是将其显示在模态窗口中...你知道,就像一个弹出窗口;)< / p>

var sample = Ext.getCmp('popup') || new MyApp.view.popup;

sample.update(record.data);

var win = Ext.widget('window', {
    title: "Sample"

    ,autoShow: true
    ,modal: true

    ,layout: 'fit'
    ,items: [sample]

    ,width: 300
    ,height: 300

    ,buttons: [{
        text: "Ok"
        ,handler: function() {

            // maybe you'll want to process your form here

            // remove your component before closing the window
            // to avoid having it auto destroyed
            win.remove(sample, false);

            win.close();
        }
    }]
});