From 63cb8a62b76b9de975e4a13e9895204015338576 Mon Sep 17 00:00:00 2001 From: Rufus Pollock Date: Wed, 6 Jun 2012 06:20:48 +0100 Subject: [PATCH] [#145,bugfix][s]: avoid generating an infinite loop in render event binding of fields widget (as occurred in certain cases). --- src/widget.fields.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/widget.fields.js b/src/widget.fields.js index f4894273..598d4cf3 100644 --- a/src/widget.fields.js +++ b/src/widget.fields.js @@ -63,8 +63,12 @@ my.Fields = Backbone.View.extend({ this.el = $(this.el); _.bindAll(this, 'render'); - this.model.fields.bind('all', function() { + // TODO: this is quite restrictive in terms of when it is re-run + // e.g. a change in type will not trigger a re-run atm. + // being more liberal (e.g. binding to all) can lead to being called a lot (e.g. for change:width) + this.model.fields.bind('reset', function(action) { self.model.fields.each(function(field) { + field.facets.unbind('all', self.render); field.facets.bind('all', self.render); }); // fields can get reset or changed in which case we need to recalculate