EXTJS表格:如何只更新记录,而不是整个记录

时间:2015-11-19 01:30:59

标签: javascript mongodb extjs format

我制作了一个编辑表单,用新评论更新了一个评论数组。到目前为止一切都很好。

该商店来自MongoDB。

记录具有ISO日期,当我更新它时,将其更改为字符串。

由此:

"tmx" : ISODate("2015-07-19T00:26:53.000Z")

到此:

"tmx" : "Sun Jul 19 2015 00:55:23 GMT+0100 (Hora de Verão de GMT)"

样本记录:

"tmx" : ISODate("2015-07-19T00:26:53.000Z"),
"comments" : [{
    "comment" : "tury",
    "date" : "2015-11-19T01:15:13.552Z"
}]

我的表格:

var form = new Ext.form.FormPanel({
    width: 500,

    items: [{
        xtype: 'grid',
        store: storearray,
        margin: "0 0 10 0",
        columns: [{
            id: 'comment',
            header: "Text",
            autoSizeColumn: true,
            flex: 1,
            sortable: true,
            dataIndex: 'comment'
        }, {
            id: 'date',
            header: "Date",
            dateFormat: 'm-d-Y g:i A',
            autoSizeColumn: true,
            flex: 1,
            sortable: true,
            dataIndex: 'date'
        }],
        layout: {
            type: 'fit',
            align: 'stretch'
        }
    }, {
        xtype: 'textarea',
        id: 'new',
        text: 'Add Comment',
        style: 'width: 100%',
        fieldLabel: 'Add Comment',
        layout: {},
        name: 'comment'
    }],
    dockedItems: [{
        xtype: 'toolbar',
        flex: 1,
        dock: 'bottom',
        ui: 'footer',
        layout: {
            pack: 'end',
            type: 'hbox'
        },
        items: [{
            xtype: 'button',
            text: 'Cancel',
            itemId: 'cancel',
            iconCls: 'cancel'
        }, {
            xtype: 'button',
            text: 'Save',
            itemId: 'save',
            iconCls: 'save',
            handler: function (form, rowIndex, colIndex) {
                var recform = this.up('form').getForm().getRecord();
                var names = recform.get('comments');
                var arraysize = names.length;
                var val = Ext.getCmp('new').getValue();
                var actual = new Date().toISOString();
                if(val == "") {
                    alert('Comentario Vazio');
                } else {
                    names.push({'comment': val, 'date': actual});
                    recform.save();
                    var newRecord = store.sync();
                    this.up('form').getForm().setRecord(newRecord);
                    this.up('form').refresh();
                }
            }
        }]
    }]
});

我想要做的只是更新字段或让我的日期保持ISODate格式。并且新的评论日期也会被插入asISODate。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

更新记录/模型中的特定字段:

  

set(fieldName,newValue,[options]):String []   将给定字段设置为给定值,将实例标记为脏

来源:Extjs model

在你的例子中,如果我理解正确地做出这样的事情:

var recform = this.up('form').getForm().getRecord();
var actual = new Date().toISOString();
recform.set('comments', actual);