2015-05-19 4 views
0

У меня есть магазин. В событии загрузки магазина я делаю что-то вроде этого.Extjs store deep clone issue

'load': function (store, rec, success, options) { 

      var data = store.getRange(); 
      var data2 = store.getRange(); 

     } 

Если я скажу data == data2, я получаю false. Это означает, что data и data2 не указывают на то же место ссылки.

Предположим, что магазин conatins несколько записей & каждая запись имеет свойство по имени IsUpdated, который устанавливается в false по умолчанию

На данный момент, если я скажу console.log(data[0].data.IsUpdated) & console.log(data2[0].data.IsUpdated) оба возвращает ложь (что правильно).

Теперь. Если я скажу data[0].data.IsUpdated = true &, тогда бегите console.log(data[0].data.IsUpdated) & оба возвращаются true.

Это означает, что данные и данные2 указывают на одну и ту же ссылку. Я не уверен, как решить эту проблему. Я попытался глубокий клон запись с помощью jQuery.extend(true, {}, data), но даже это не работает

ответ

0

Вы можете использовать Ext.clone:

var data2 = Ext.clone(data); 

Таким образом, когда вы устанавливаете data[0].data.IsUpdated = true, в data2 data2[0].data.IsUpdated останется ложным.