Destroy the existing Select2 object before rerendering the control.

This commit is contained in:
Harshal Dhumal 2016-05-12 16:14:01 +05:30 committed by Ashesh Vashi
parent d768faf2ea
commit 585daddce2
2 changed files with 10 additions and 2 deletions

View File

@ -142,6 +142,11 @@ function($, _, pgAdmin, Backbone, Backform, Alertify, Node) {
} }
}, },
render: function() { render: function() {
if(this.$sel && this.$sel.select2) {
this.$sel.select2('destroy')
}
/* /*
* Let SelectControl render it, we will do our magic on the * Let SelectControl render it, we will do our magic on the
* select control in it. * select control in it.
@ -167,7 +172,7 @@ function($, _, pgAdmin, Backbone, Backform, Alertify, Node) {
* Add empty option as Select2 requires any empty '<option><option>' for * Add empty option as Select2 requires any empty '<option><option>' for
* some of its functionality to work and initialize select2 control. * some of its functionality to work and initialize select2 control.
*/ */
this.$el.find("select").select2(select2_opts); this.$sel = this.$el.find("select").select2(select2_opts);
return this; return this;
} }

View File

@ -1782,6 +1782,9 @@
*/ */
var Select2Control = Backform.Select2Control = Backform.SelectControl.extend({ var Select2Control = Backform.Select2Control = Backform.SelectControl.extend({
render: function() { render: function() {
if(this.$sel && this.$sel.select2) {
this.$sel.select2('destroy')
}
Backform.SelectControl.prototype.render.apply(this, arguments); Backform.SelectControl.prototype.render.apply(this, arguments);
var opts = this.field.toJSON(); var opts = this.field.toJSON();
@ -1795,7 +1798,7 @@
*/ */
var $select = this.$el.find("select"); var $select = this.$el.find("select");
$select.prepend($('<option></option>')); $select.prepend($('<option></option>'));
$select.select2(select2Opts); this.$sel = $select.select2(select2Opts);
return this; return this;
} }