Skip to content

Resetting a collection does not re-establish bindings for models that were included both before and after that reset #70

@rzhou186

Description

@rzhou186

I have a component using the Backbone.React.Component mixin that accepts a collection.

I populate this collection within my component via Backbone's Collection.reset, passing in an array of JavaScript objects with the model data (not models themselves). For example,

this.getCollection().reset([{ id: "552ac27b526179a194170000", name: "One" }, { id: "552ac27b526179a194190000", name: "Two" }]);

var one = this.getCollection().get("552ac27b526179a194170000");
var two = this.getCollection().get("552ac27b526179a194190000");

// I then pass these two models to some child components.

On the first call to Collection.reset, all of the mixin's bindings work perfectly. If I update/save one of the models from the above example within any child component, the mixin will trigger a re-render.

However, I run into an issue when I call Collection.reset again, and pass in a batch of data that has any overlap with the existing collection. Like so:

this.getCollection().reset([{ id: "552ac27b526179a194170000", name: "One" }, { id: "552ac27b526179a194120000", name: "Three" }]);

var one = this.getCollection().get("552ac27b526179a194170000");
var three = this.getCollection().get("552ac27b526179a194120000");

// I then pass these two models to some child components.

Here, the variable three will have its bindings properly established. However, one actually seems to lose its bindings! For example, when I call one.save({ name: "OneModified" }) within a child component, it won't trigger a re-render on my top-most component.

I think this is an issue with the way that reset events are handled, for models that existed both before and after the reset. Thoughts? Thanks so much!

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions