2013-08-12 3 views
0

Я пытаюсь изменить хранилища dijit/form/select на лету. Для этого мне нужно получить хранилище с сервера. Мне нужно сохранить этот магазин в каком-то временном хранилище и внести изменения во временный магазин в моем коде.как присвоить значение переменной другой переменной вместо ссылки dojo javascript

В моем коде ниже, requiredStore имеет данные, полученные от сервера. Мне нужно создать новый временный магазин, в моем случае временного хранилища, который может быть привязан к данным в requiredStore (вместо временного хранилища, являющегося ссылкой на requiredStore). Таким образом, когда я удаляю/изменяю значения во временном хранилище, requireStore не влияет. Ниже приведен код, который я использовал.

 function getDropDownContents() { 
      require([ 
      "dojo/store/Memory", 
      "dijit/form/Select", 
      "dojo/data/ObjectStore", 
      "dojo/request", 
      "dojo/domReady!" 
      ], 
      function (Memory, Select, ObjectStore, request) { 
       var os; 
       var def = new dojo.Deferred(); 
       dojo.xhrGet({ 
        url: "pageToGetValues.aspx", 
        handleAs: "json", 
        load: function (res) { 
         requiredStore = new Memory({ data: res }); 
         temporaryStore = requiredStore; 
         getOptionsToSelect('dropdown1'); 
         var select = dijit.byId('dropdown1'); 
         select.on('change', function (evt) { 
          getOptionsToSelect('dropdown2'); 
         }); 
         myFormDialog.show(); 
        } 
       }); 
      }); 
     } 

Но, я не знаю, какие принципы JavaScript я м не после, кузен, когда я м меняется temporaryStore, requiredStore также получение изменилось.

ответ

0

Вы должны либо сделать глубокий клон requiredStore (пройдя через свойства и прототип, чтобы создать идеальный дубликат), или же просто создать другой магазин памяти в целом:

requiredStore = new Memory({ data:res }); 
temporaryStore = new Memory({ data: res }); 

Я не знаю, почему вы бы не использовать этот подход, но если вы хотите, чтобы сделать глубокий клон этот вопрос поможет:

What is the most efficient way to deep clone an object in JavaScript?

+0

О, я хотел бы упомянуть. Я пробовал это. Но это не помогло. Тем не менее, изменение временного хранилища приводит к необходимости сохранения. Но, спасибо за просвещение меня относительно клонирования в javaScript. Я получил свой ответ, когда искал клонирование в додзё. – Sandy

Смежные вопросы