Skip to content

Integrating mutators with backbone.relational #37

@RomanKapitonov

Description

@RomanKapitonov

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.

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions