Правильно, поэтому у меня есть несколько моделей 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);
Надеюсь, это поможет кому-то еще!