Ext.data.Store
古い参照を保持せずにクローンを作成する方法を理解しようとしています。
いくつかのコードでもっとよく説明しましょう。ソースストアは次のとおりです。
var source = Ext.create ('Ext.data.Store', {
fields: ['name', 'age'] ,
data: [
{name: 'foo', age: 20} ,
{name: 'boo', age: 30} ,
{name: 'too', age: 10} ,
{name: 'yoo', age: 80} ,
{name: 'zoo', age: 30}
]
});
私がやりたいことの例に従います:
var target = source;
target.removeAll ();
// Here I need to have target empty and source unchanged
// But in this case, source is empty as well
さて、上記の例では、コピーは参照によって行われますが、値によって行う必要があります。だから私Ext.clone ()
はドキュメントで見つけましたが、次のような複雑なオブジェクトでは機能しないようExt.data.Store
です:
var target = Ext.clone (source);
target.removeAll ();
// source is still empty
それから私は試してみましExt.data.Model.copy ()
たが、それを機能させる唯一の方法はこれです:
var target = Ext.create ('Ext.data.Store', {
fields: ['name', 'age']
});
source.each (function (model) {
target.add (model.copy ());
});
今、私の理由で、私は別のものをインスタンス化したくないExt.data.Store
ので、これを避けたいです:
var target = Ext.create ('Ext.data.Store', {
fields: ['name', 'age']
});
私はこのようなものが欲しいです:
var target;
source.each (function (model) {
target.add (model.copy ());
});
しかし、明らかに、それは機能しません。
では、どうすればソースストアのクローンを作成できますか?