Ext.Viewport.add不是Ext js中的函数

时间:2016-10-25 06:27:30

标签: javascript extjs

我是Ext js的新手。我试图在应用程序中实现Grid,一旦用户点击数据,新的msg窗口将打开当前数据,用户可以编辑它,这将保存在模型中。我正在使用Classic toolkit

我试过这样:

Ext.define('MyApp.view.main.MainController', {
    extend: 'Ext.app.ViewController',

    alias: 'controller.main',
    require:['Ext.plugin.Viewport'],

    itemtap: function (view,index,item,record) {
       Ext.Viewport.add({
       xtype:'formpanel',
       title:'update',
       width:300,
       centered: true,
       modal: true,
       viewModel : {
                        data: {
                            employee: record
                        }
                    },
       items: [{

                        xtype: 'textfield',
                        name: 'firstname',
                        label: 'First Name',
                        bind: '{employee.name}'

                    }, {
                        xtype: 'toolbar',
                        docked: 'bottom',
                        items: ['->', {
                            xtype: 'button',
                            text: 'Submit',
                            iconCls: 'x-fa fa-check',
                            handler: function() {
                                this.up('formpanel').destroy();
                            }
                        }, {
                            xtype: 'button',
                            text: 'Cancel', 
                            iconCls: 'x-fa fa-close',
                            handler: function() {
                                this.up('formpanel').destroy();
                            }
                }]
           }]
     })

在我的另一个文件中,我将此函数称为

listeners: {
        select: 'itemtap'
    }

但是我收到的错误就像Ext.Viewport.add不是函数

请建议我如何才能实现。

欢迎任何建议。

1 个答案:

答案 0 :(得分:3)

在经典工具包中,您没有每次只显示一个项目的视口。您希望在运行时添加组件的视口的整个概念是现代工具包的概念。

相反,您可以将表单放在Window中:

var window = Ext.create('Ext.window.Window',{
   title:'update',
   width:300,
   centered: true,
   modal: true,
   items: [{
       xtype:'formpanel'
       viewModel : {
                    data: {
                        employee: record
                    }
                },
   ...

})
window.show();

你的处理程序应该关闭/销毁窗口,而不仅仅是破坏formpanel:

this.up('window').close();
this.up('window').destroy();