1

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

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

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)); 

решаемые IT. Пока я писал этот вопрос, я понял, как это сделать. Но я думал, что останусь здесь, если другие столкнутся с той же проблемой.

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

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); 

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

ответ

2

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

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); 

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