1

我继承了一个 ExtJs4 项目,我有一个相当基本的问题。

我有一个视图,其中有一个新添加的复选框字段作为项目之一,如下所示:

{
    boxLabel: 'Test Message?',
    xtype: 'checkboxfield',
    id: 'cbTextMessage',
    checked: false,
    name: 'testMessage',
    inputValue: true,
    uncheckedValue: false
}

当记录处于活动状态时,此值将更改为适当的选中或未选中状态。创建新记录时,该值设置为复选框的值。但是,在编辑现有记录时,模型永远不会更新为原始值以外的任何值。

该模型:

Ext.define('PushAdmin.model.Message', {
    extend: 'Ext.data.Model',
    idProperty: 'id',

    requires: ['Proxy.ParameterProxy'],
    fields: [
        { name: 'id', type: 'int' },
        { name: 'games', type: 'auto',
            convert: function(data, model) {
                data = ( data && !Ext.isArray(data) ) ? [data] : data;
                return data;
            }
        },
        { name: 'msgEnglish', type: 'string' },
        { name: 'msgFrench', type: 'string' },
        { name: 'msgSpanish', type: 'string' },
        { name: 'testMessage', type: 'bool' },
        { name: 'sendAt', type: 'date' },
        { name: 'note', type: 'string'},
        { name: 'status', type: 'string' },


    ],

    proxy: {
        type: 'rest',
        url: '/apnsadmin/rest/Message',

        pageParam: undefined,
        startParam: undefined,
        limitParam: undefined,


        reader: {
            type: 'json',
            root: 'data',
            successProperty: 'success'
        }
    }
});

最后,这是单击保存按钮时调用的函数。

click: function () {
    var grid = this.getQueuedMessagesGrid();
    var sm = grid.getSelectionModel();

    var selectedRecord = sm.getCount() > 0 ? sm.getSelection()[0] : undefined;

    this.getMessageForm().getForm().updateRecord();

    var newRecord = this.getMessageForm().getForm().getRecord();

    if (selectedRecord!=undefined) {
        console.log(selectedRecord);
        console.log(newRecord);
        selectedRecord.save();
    } else {
        // New record!

        console.log("Saving new record");

            grid.getStore().add(newRecord);
            newRecord.save();
        }

        this.getMessageForm().setDisabled(true);
        this.getMessageForm().getForm().reset();
    }
},

我知道事情可能不是正确的 ExtJS 做事的方式,但由于这主要是有效的,我试图不必重写它的大部分。我只想知道在将这个复选框/布尔字段添加到表单时我做错了什么。

4

0 回答 0