Skip to content
This repository was archived by the owner on Apr 2, 2019. It is now read-only.

Commit 55c2f7a

Browse files
committed
Merge pull request #521 from christinedraper/fix507
Prevent moveToNextCell throwing exception when model is shared (#507)
2 parents f8bce25 + 2e1b637 commit 55c2f7a

2 files changed

Lines changed: 45 additions & 1 deletion

File tree

src/body.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,10 @@ var Body = Backgrid.Body = Backbone.View.extend({
341341
var i = this.collection.indexOf(model);
342342
var j = this.columns.indexOf(column);
343343
var cell, renderable, editable, m, n;
344-
344+
345+
// return if model being edited in a different grid
346+
if (j === -1) return this;
347+
345348
this.rows[i].cells[j].exitEditMode();
346349

347350
if (command.moveUp() || command.moveDown() || command.moveLeft() ||

test/body.js

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -511,4 +511,45 @@ describe("A Body", function () {
511511
expect(body.rows[1].cells[0].$el.hasClass("editor")).toBe(false);
512512
});
513513

514+
// test fix for #507
515+
it("will not throw an exception when backgrid:edited is fired on a shared model", function () {
516+
var people = new Backbone.Collection([
517+
{name: "alice", age: 28, married: false},
518+
{name: "bob", age: 30, married: true}
519+
]);
520+
var columns = new Backgrid.Columns([{
521+
name: "name",
522+
cell: "string"
523+
}, {
524+
name: "age",
525+
cell: "integer",
526+
editable: false
527+
}, {
528+
name: "sex",
529+
cell: "boolean",
530+
renderable: false
531+
}]);
532+
var body = new Backgrid.Body({
533+
collection: people,
534+
columns: columns
535+
});
536+
body.render();
537+
538+
var columns2 = new Backgrid.Columns([{
539+
name: "name",
540+
cell: "string"
541+
}]);
542+
var body2 = new Backgrid.Body({
543+
collection: people,
544+
columns: columns2
545+
});
546+
body2.render();
547+
548+
body.rows[0].cells[0].enterEditMode();
549+
var testTrigger = function() {
550+
people.trigger("backgrid:edited", people.at(0), columns.at(0), new Backgrid.Command({keyCode: 9}));
551+
};
552+
expect(testTrigger).not.toThrow();
553+
});
554+
514555
});

0 commit comments

Comments
 (0)