Как установить свойство объекта в модели Backbone - PullRequest
1 голос
/ 30 марта 2012

Правильно, поэтому у меня есть несколько моделей Backbone, и в одной из них у меня есть объект, который имеет набор ключей и значений, значения которых модифицируются путем нахождения ключа в строке.

Итак, я начал с кода, который был построен по принципу, приведенному ниже, я вполне уверен, как и почему этот код будет выводить true:

 var boundData = {
     text: 'value' 
 }
 var key = 'text';
 return (boundData[key] === 'value');

Итак, чтобы установить значение свойства,Я бы сделал что-то вроде:

 boundData[key] = 'new value';

Затем я решил перевести все свои существующие классы на модели Backbone.И проблема, с которой я столкнулся, заключалась в том, что я больше не могу изменять свои свойства с помощью оператора equals, вместо этого я использую метод set, предоставляемый Backbone для моделей.Этот метод принимает строку в качестве первого параметра, эта строка идентифицирует ключ для переменной, которую я пытаюсь изменить.

 this.set("boundData[" + settings.name + "]", new OpenCore.boundData(settings));

Это, похоже, не работает, и не делает это:

 this.set("boundData." + settings.name, new OpenCore.boundData(settings));

РЕШЕНО.Пока я писал вопрос, я придумал, как это сделать.Но я подумал, что оставлю это здесь на случай, если другие столкнутся с той же проблемой.

Это решение, хотя оно может быть и не самым лучшим (мне было бы интересно, если бы кто-то мог отсортировать оригинальный способ), но, похоже, работает.

var boundData = this.get('boundData'); //Create a reference of the object with get().
boundData[settings.name] = new OpenCore.boundData(settings); //Update this reference.
//The change will be reflected in the original instance or you can just:
this.set('boundData', boundData);

Надеюсь, это поможет кому-то еще!

1 Ответ

2 голосов
/ 31 марта 2012

Это решение, хотя оно может быть и не самым лучшим (мне было бы интересно, если бы кто-то мог отсортировать оригинальный способ), но, похоже, оно работает.

var boundData = this.get('boundData'); //Create a reference of the object with get().
boundData[settings.name] = new OpenCore.boundData(settings); //Update this reference.
//The change will be reflected in the original instance or you can just:
this.set('boundData', boundData);

Надеюсь, это поможет кому-то еще!

...