私は次のモデルを持っています:
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
したがって、これを修正する唯一の方法は、注文を作成してファントム = true に設定し、setDirty() を呼び出すことです。これにより、POST が発行され、RestProxy で buildUrl: をオーバーライドして、POST リクエストをテストし、idProperty を URL から削除するロジックを使用します。
これは私には醜い回避策のように思えますが、もっと良い方法があるかどうか知りたいですか?
私の質問は次のとおりだと思います。このようなものを処理する最良の方法は何ですか?