Using Backbone.js I know it\'s highly recommended to set a model\'s property using the set method, and NOT by directly modifying the attributes internal hash.
However, a
In the annotated source code mentioned by Brian Genisio you can read the following lines: "Handle both "key", value and {key: value} -style arguments.". So you can just use model.set(myProperty,"bar",options). Perhaps they've added this feature after the post of Brian Genisio.. i dunno.
Well, if you look at the annotated source code, you'll find that set
does a lot.
What if you extended Backbone.Model with a function that does it for you:
Backbone.Model.prototype.setByName = function(key, value, options) {
var setter = {};
setter[key] = value;
this.set(setter, options);
};
Then, you can just do what you want directly on the model:
var model = new Backbone.Model();
model.setByName(myProperty, "bar");
That feels like a better solution to me.
Edit
As @earl3s pointed out, this is no longer necessary in more recent versions of Backbone. Today, you can just call model.set(myProperty, "bar")
and it does what you want.