0

在下面的示例中,当我们单击按钮时,所有表单数据(包括KEY-VALUE)都将传递给 php 文件以保存在数据库中。抓取KEY-VALUE是由var form = this.up('form').getForm();语句完成的。

更新 3

Ext.define ('Mycomp.model.MyClass',{
    extend: 'Ext.data.Model',

    fields:['textfieldone']

});

==================================================== =======================

更新 2

当用户单击一个按钮时,我会显示具有一个文本字段和一个按钮的视图(如以下代码所示)。用户将输入一些值并单击按钮,用户在文本字段中输入的值应保存在数据库中(Store有指向 PHP 代码路径的链接)

控制器

Ext.define('Mycomp.controller.MyClass',{
    extend: 'Ext.app.Controller',

    stores:['MyClass'],
    models:['MyClass'],
    views:['MyClassView'],
    init: function(){
        this.control({          
            'myclassview button[action=save]': {
                click: this.myMethod
            }
        });         
        },
        myMethod: function(button,record) {
               var win    = button.up('window'),
               form   = win.down('form'),
               record = form.getForm().getRecord(),
               values = form.getForm().getValues();
               console.log (values);
               console.log (record);
               record.getRecord().set(values);         
           win.close();
           this.this.getMyClassStore().sync(); 
    }
});

看法

Ext.define('Mycomp.view.user.MyClassView', {
    extend: 'Ext.window.Window',
    alias: 'widget.myclassview',
    initComponent: function() {
        this.items = [
            {
                xtype: 'form',
                items: [
                    {
                        xtype: 'textfield',
                        name : 'textfieldone',
                        fieldLabel: 'Contact Person Name'
                    }
                ]
            }
        ];
        this.buttons = [
                        {
                            text: 'Save',
                            name:'save',
                            action: 'save'
                        }
                    ];
        this.callParent(arguments);
    }
});

店铺

Ext.define('Mycomp.store.Myclass',{
    extend:'Ext.data.Store',
    model:'App.model.Myclass',

    proxy: {
        actionMethods : {
            create : 'POST'
        },
        type: 'ajax',
        url : '/savetodb.php'

    }

});

==================================================== ==============================

更新 1

 ....  this.buttons = [
                            {
                                text: 'Save',

                                action: 'save'
                            }, ...

店铺

Ext.define('Mycomp.store.Myclass',{
    extend:'Ext.data.Store',
    model:'App.model.Myclass',

    proxy: {
        actionMethods : {
            create : 'POST'
        },
        type: 'ajax',
        url : '/savetodb.php'

    }

});

控制器

this.control({

            'mycalssform button[action=save]': {
                click: this.myMethod
            }
        });


        },

        myMethod: function(button, record) {

               var win    = button.up('window'),
               form   = win.down('form'),
               record = form.getRecord(),
               values = form.getValues();
               console.log (record);
      console.log (values );

           record.set(values);
           win.close();
           this.this.getmyClassStore().sync(); 

FIREBUG OUT PUT >> 它说 RECORD IS UNDEFINED 。为什么是这样 ?

undefined

Object { textfileldone="hello", textfileldtwo="bever", more...}

record is undefined
[Break On This Error]   

record.set(values);
4

1 回答 1

2

为了将表单“绑定”到记录,您需要创建一个新模型实例并调用form.loadRecord()- 只有在这样做之后您form.getRecord()才能工作。

或者(如果您只使用新记录形成表格,这将是合适的),您可以在保存并设置其值时简单地创建一个新模型记录。

沿着这些路线的东西将创建一个新的模型记录:

var iStore = this.getmyClassStore();
var iModel = iStore.model; 
var iNewRecord = iModel.create();

然后您可以执行:

iValues = form.getValues();
iNewRecord.set( iValues );

然后您需要将新记录添加到商店:

iStore.add( iNewRecord )

所以你的代码应该是这样的:

    myMethod: function(button, record) {

           var win    = button.up('window'),
               form   = win.down('form'), 
               values = form.getValues(),
               store = this.this.getmyClassStore(),
               model = store.model,
               record = model.create();


               record.set( values );
               store.add( record );
               win.close();
               store.sync(); 
    }
于 2012-07-03T12:24:05.090 回答