Extjs - 如何 access/modify Ext.data.Batch 开始前的数据

Extjs - How to access/modify the data before the Ext.data.Batch starts

-- Extjs - 6.6.0, Extjs Grid with Cell Editing 插件,记录保存操作到服务器

我的应用程序界面中有一个网格,其中包含适当的商店和附加到商店的模型。网格有一个带有日期编辑器的日期列,呈现格式为 'd-M-Y',提交给服务器的日期值为 'Y-m-d'。在通过会话开始的批处理保存操作期间,我无法访问数据以将日期格式修改为 'Y-m-d' 并作为 'd-M-Y' 提交,这导致了问题。

任何人都可以在 Ext.Data.Batch 开始之前提供有关 accessing/modifying 数据的信息。

注:

  1. 我无法用 Ajax 调用替换批处理。
  2. 我也已经为模型 class 尝试了 dateWriteFormat。
  3. 日期显示和提交格式必须是'd-M-Y' & 'Y-m-d'。
  4. 我无法 post 代码,因为它太大了。

如有任何帮助,我们将不胜感激。

有几种方法。

领域

您可能想通过 serialize 编辑商店的型号。

Ext.define('MyApp.model.Users', {
    extend: 'Ciss.data.Model',

    fields: [{
        name: 'BirthDate',
        type: 'date',
        dateFormat: 'd m Y',        // how the date format comes from the server
        serialize: function (val) {
            return Ext.Date.format(val, 'Y-m-d');
        }
    }];
});

作者

您可以使用 writer 使用 dateFormat

writer: {
    type: 'json',
    dateFormat: 'Y-m-d',
    writeAllFields: true
}

虽然您的字段应该一直是日期类型

如果您还需要更多控制,可以使用 transform 方法。

Ext.create('Ext.data.Store', {
    model: 'User',
    proxy: {
        type: 'ajax',
        url : 'users.json',
        writer: {
            type: 'json',
            transform: {
                fn: function(data, request) {
                    // do some manipulation of the unserialized data object
                    return data;
                },
                scope: this
            }
        }
    },
});

事件

您可以使用商店 beforesync 活动

最后的希望 如果所有这些都不适合您,您可以在发送之前获取每个请求。