Я пытаюсь выяснить, как клонировать 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 ());
});
Но, очевидно, это не работает.
Итак, как я могу клонировать хранилище источников?