Rally.data.custom.Store
メモリ プロキシのソース コードを調べたところ、ストアで何も追加、削除、または正しく更新されなかった理由がわかりました。メモリ プロキシの create メソッドと destroy メソッドをオーバーライドする必要があります。
現在のメモリのプロキシ機能
これらは、メモリ プロキシのレコードを作成および破棄するために使用される関数です。ご覧のとおり、レコードを作成または破棄しません...
updateOperation: function(operation, callback, scope) {
var i = 0,
recs = operation.getRecords(),
len = recs.length;
for (i; i < len; i++) {
recs[i].commit();
}
operation.setCompleted();
operation.setSuccessful();
Ext.callback(callback, scope || this, [operation]);
},
create: function() {
this.updateOperation.apply(this, arguments);
},
destroy: function() {
this.updateOperation.apply(this, arguments);
},
正しいメモリ プロキシ設定
以下は、カスタム ストア内のレコードを実際に追加および削除するカスタム ストアをインスタンス化する方法です。
me.customStore = Ext.create('Rally.data.custom.Store', {
data: //customData
model: //modelType
autoSync:true,
proxy: {
type:'memory',
create: function(operation) {
var me = this;
operation.getRecords().forEach(function(record){
console.log('adding record', record);
me.data.push(record);
});
this.updateOperation.apply(this, arguments);
},
destroy: function(operation) {
var me = this;
operation.getRecords().forEach(function(record){
console.log(record);
for(var i = 0;i<me.data.length;++i){
if(/*me.data[i] == record*/ ){
me.data.splice(i, 1);
return;
}
}
});
this.updateOperation.apply(this, arguments);
}
},
listeners://listener stuff here
});