Backbone.Mutators
Backbone.Mutators copied to clipboard
Integrating mutators with backbone.relational
I've faced the following issue while trying to integrate Backbone.Mutators with Backbone.Relational which is used to build client side relations and helps to serialize/deserialize data into corresponding json/models.
For example lets assume we have a model (in coffeescript)
@ClientApp.module "Entities", (Entities, App, Backbone, Marionette, $, _) ->
class Entities.Store extends Entities.RelationalModel
defaults:
location: -> new Entities.Location()
mutators:
store_name: ->
@get("location")?.get("name")
What I have now is trying to access related model in mutator will result in an error. That is because backbone.relational haven't yet converted the model's sub-object into an instance of underlying model at the time backbone.mutators serialize data and hence @get('location')
will return a json object instead of Entities.Location instance.
I've applied a quick fix by changing the library to save get
and set
methods from Backbone.RelationalModel.
var Mutator = function () {},
oldGet = Backbone.RelationalModel.prototype.get,
oldSet = Backbone.RelationalModel.prototype.set,
oldToJson = Backbone.RelationalModel.prototype.toJSON;
...
_.extend(Backbone.RelationalModel.prototype, Mutator.prototype);
However i do not really like this fix as far as i will have to apply it every time Backbone.Mutators is updated. Perhaps someone has a more consistent solution? Also please let me know if you need any additional info.
Hey,
I´m out of the "Backbone Game" for a couple of months now & basically, after grinding my gears a bit, I don't see a chance to incorporate the plugins better (at least not, with digging deeper into the topic, and I don't see time for doing that).
That means, if you figure out how to integrate it easier/with less effort, I´m happy to change smth. in the plugin, or accept a PR.