我有以下型号:ExtJs4模型用户定义的ID
Ext.define('Gst.model.Order', {
extend: 'Ext.data.Model',
idProperty: 'id',
fields: [
{ name: 'id', type: 'string' }
]
});
我的问题是,为了模型的ID是用户定义的。因此,代码创建一个新的单实例,并将其插入命令店将是:
order = Ext.create('Gst.model.Order', {'id': 'someuserdefinedvalue'});
store.insert(0, order);
会发生什么事是因为idProperty由用户则订单没有被标记为幻影提供的,因此不考虑脏。因此,服务器不会发布POST。如果我手动设置为幻影和肮脏的话,我可以触发POST当我插入的顺序到像店:
order = Ext.create('Gst.model.Order', {'id': 'someuserdefinedID'});
order.phantom = true;
order.setDirty();
store.insert(0, order);
这将是罚款,但我的服务器端代码使用REST控制器,并期待着POST不要在url中拥有和id。因此,尽管要求ExtJS的问题是
POST http://app.local/api/order/someuserdefinedID.json
虽然我的服务器将查找的格式将
POST http://app.local/api/order.json
所以我有一些了用于固定这将是创建一个订单的唯一途径,设置phantom = true并调用setDirty()。这将导致发布POST,然后在我的RestProxy中重写buildUrl:使用逻辑来测试POST请求并从url中移除idProperty。
这看起来像是一个丑陋的工作,想知道是否有更好的方法?
我想我的问题是:什么是处理这样的事情的最佳方式是什么?
您应该提供您正在使用的确切ExtJS版本 – sra
在客户端为新记录设置ID是很常见的。这通常是数据库的工作。 – dbrin
Sra:我正在使用ExtJs 4.1.1 – John