Extjs Restful Store、バッチでリクエストを送信しますか?
//Create the store
config.store = new Ext.data.Store({
restful: true,
autoSave: false,
batch: true,
writer: new Ext.data.JsonWriter({
encode: false
}),
reader: new Ext.data.JsonReader({
totalProperty: 'total',
root: 'data',
fields: cfg.fields
}),
proxy: new Ext.data.HttpProxy({
url:cfg.rest,
listeners:{
exception: {
fn: function(proxy, type, action, options, response, arg) {
this.fireEvent('exception', proxy, type, action, options, response, arg);
},
scope: this
}
}
}),
remoteSort: true,
successProperty: 'success',
baseParams: {
start: 0,
limit: cfg.pageSize || 15
},
autoLoad: true,
listeners: {
load: {
fn: function() {
this.el.unmask();
},
scope: this
},
beforeload: {
fn: function() {
this.el.mask("Working");
},
scope: this
},
save: {
fn: function(store, batch, data) {
this.el.unmask();
this.fireEvent('save', store, batch, data);
},
scope: this
},
beforewrite: {
fn: function(){
this.el.mask("Working...");
},
scope: this
}
}
});
注:fireEventを無視してください。このストアは共有カスタムグリッドコンポーネントで構成されています。
ただし、私はここで1つの問題があります。私がしたCRUDアクションが何であれ、私はいつも選択したN行に等しいN要求をサーバーに出します。つまり、10行を選択してDeleteキーを押すと、10個のDELETEリクエストがサーバーに送信されます。
たとえば、これはレコードを削除する方法です。
/**
* Call this to delete selected items. No confirmation needed
*/
_deleteSelectedItems: function() {
var selections = this.getSelectionModel().getSelections();
if (selections.length > 0) {
this.store.remove(selections);
}
this.store.save();
this.store.reload();
},
注:thisの範囲はグリッドコンポーネントです。
だから、そういうことになっていますか?または私の構成上の問題? 私はExtjs 3.3.1を使用しています。また、Ext.data.Store、
の下の
batch
のドキュメントに従ってStoreがRESTfulならDataProxyもRESTfulであり、レコードごとに一意のトランザクションが生成されます。
これは私の設定上の問題です。
注:私はlistful
、encode
、writeAllFields
、encodeDelete
でExt.data.JsonWriter
を試しました...希望がない
お返事ありがとうございました。これは私がこの問題を提起した設定ミスの1つだと思っていましたが、少なくともあなたは私と一緒にそれを確認しました。 –
これはExtJS 4.1.3でもまだ成立しているのでしょうか? – justinzane
@justinzane - 私はExtJS 4について知りません。この質問はExtJS 3についてのものです。 v4の静かなバッチリクエストについて質問することは、おそらくそれ自身の質問に値するでしょう。 – wes