Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nested Backbone.Model support #78

Open
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

adamterlson
Copy link

When working with nested Backbone models, I ran into a situation where DeepModel was setting changes directly on nested models after fetch. The result was that the backbone model itself had attributes on it. Here's the scenario:


Fetch -- HTTP GET returns:
{
foo: 'foo'
}

On the Model:

{
_changing: false
_events: Object
cId: "c37",
clear: function () { [native code] }
...
foo: "foo" // Set right on the model, not on the attributes
...
url: function () { [native code] }
values: function () { [native code] }
}


In order to fix this, I made DeepModel check if the object being modified is a backbone model and using that object's getters and setters instead of just result[attr] = value.

In addition, there is support (and additional tests) for:

  • Models within models within models (etc)
  • Passing options from DeepModel's set into the child model's set (e.g. silent).

If there are any other changes I should make, let me know! Should be pretty well unit tested

@anthonyaam
Copy link

👍

@ebrandel
Copy link

We've run into this as well. 👍

@adamterlson
Copy link
Author

So.... any movement on this pull request?

@jmagoncalves
Copy link

Same here! Thks @adamterlson

@pblanchardie
Copy link

Very nice improvement, I think every backbone user will run into this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants