带有自动 ID 属性 的 ExtJS 记录

ExtJS Record with auto id Property

我的 ExtJS 5.1.0 商店有以下问题。 当我想用 var m = new (store.model)(); 创建一个新的空模型并用 record.set(values); 设置值(来自 Ext.form.Panel)时,记录在正常的 Id 旁边,第二个id。第二个看起来像这样:"AM.namespace.model.ServiceContract-2".

是否可以防止自动生成 ID?

创建我使用:

onAddServiceContract: function (item) {
    this.__form = item.up('form');
    var values = this.__form.getValues();
    var store = this.getStore('ServiceContract');

    var record = new (store.model)();
    record.set('Id', 0000);
    record.set(values);
    record.phantom = true;
    var rec = store.add(record);
}

商店定义为:

Ext.define('AM.####.store.ServiceContract',{
extend: 'AM.####.data.Store',
requires: ['Ext.data.proxy.Direct'],
model: 'AM.####.model.ServiceContract',

remoteGroup: true,

autoLoad: true,
//buffered: true,
pageSize: 1000,
leadingBufferZone: 500,
trailingBufferZone: 500,
autoSync: true,

constructor: function (config) {
    config = Ext.apply({}, config);
    if (!config.proxy) {
        var proxy = {
            type: 'direct',
            reader: {
                idProperty: 'Id',
                rootProperty: 'data',
                type: 'json'
            },
            writer: {
                allowSingle: true,
                writeAllFields: false // Note: Changed in ExtJS 5 to be default false
            },
            api: {
                read: AM.####.ServiceContract.List,
                create: AM.####.ServiceContract.Create,
                update: AM.####.ServiceContract.BulkUpdate,
                destroy: AM.####.ServiceContract.BulkDelete
            }
        };
        config.proxy = proxy;
    }

    this.callParent([config]);
    this.proxy.on('exception', this.onProxyException, this);
}

});

感谢您的帮助!

您可以 mod 将 modelidProperty 更改为其他名称。

例如:

Ext.define('App.model.rssSoaFeed_m', {
    extend: 'Ext.data.Model',
    idProperty:'extIdProperty',//renaming the extjs id property
    fields: [
        { name: 'title', type: 'auto' },
        { name: 'id', type: 'auto' }, //my custom id property
    ],
    proxy:
        {
            type: 'ajax',
            url: '/someurl.service',
            extraParams: {
            },
            reader: {
                type: 'json',
                root: 'query.results.item'
            }
        }
});

sencha docs

中有更多信息

此外,请注意文档

the idProperty may be configured as null which will mean that no identifying field will be generated.