Как сохранить значение в исходной переменной при изменении в пункте назначения (хранилище сетки)

#javascript #extjs

#javascript #extjs

Вопрос:

У меня есть некоторые данные, подобные этому.

 var myData = [{"name" : "David", "Country":"India"},{"name" : "Paul", "Country":"USA"}]
  

в моей сетке ExtJS я загружаю данные следующим образом :

 _this.getView().getStore().loadData(myData);
  

Это моя редактируемая сетка. Теперь, когда я меняю данные в ExtJS grid, например: «country: USA» на «Country: England», как они будут обновляться и в переменной myData. Как можно скопировать myData как хранилище, которое изменяет значение в обоих местах.

Ответ №1:

 var myData = [{"name" : "David", "Country":"India"},{"name" : "Paul", "Country":"USA"}];

_this.getView().getStore().loadData(Ext.Array.clone(myData));
  

Метод clone клонирует вашу переменную myData и вернет новый массив.

Метод клонирования

Комментарии:

1. таким образом, делая это, любые данные, которые я изменяю, будут исправлены в myData моих исходных данных.

2. Ах, я сожалею. Я неправильно понял ваш вопрос. Итак, вы хотите, чтобы переменная всегда оставалась неизменной при изменении значений в хранилище?

3. да, правильно. Если я скопирую, оно всегда должно работать как копия js

4. Я не уверен в этом, поскольку элементы массива будут преобразованы в экземпляры модели. Но что касается вашей проблемы: если вам нужен текущий набор данных после обновления, не могли бы вы использовать событие ‘datachanged’ в хранилище и получить текущие данные с помощью метода getData?