我有以下型號: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