From 969fb2cd4c1ecee33cf3e6dc67b1abd63ad20775 Mon Sep 17 00:00:00 2001 From: Kane York Date: Tue, 30 Jun 2015 12:23:02 -0700 Subject: [PATCH 1/2] FIX: combo-box should observe on nameProperty --- .../javascripts/discourse/components/combo-box.js.es6 | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/discourse/components/combo-box.js.es6 b/app/assets/javascripts/discourse/components/combo-box.js.es6 index 625361550fc..5ab4807fa1e 100644 --- a/app/assets/javascripts/discourse/components/combo-box.js.es6 +++ b/app/assets/javascripts/discourse/components/combo-box.js.es6 @@ -14,8 +14,12 @@ export default Ember.Component.extend({ return result; }, + realNameProperty: function() { + return this.get('nameProperty') || 'name'; + }.property('nameProperty'), + render(buffer) { - const nameProperty = this.get('nameProperty') || 'name', + const nameProperty = this.get('realNameProperty'), none = this.get('none'); // Add none option if required @@ -64,6 +68,10 @@ export default Ember.Component.extend({ o.selected = !!$(o).attr('selected'); }); + // Workaround for contentChanged not being able to observe based on + // a passed-in attribute name + this.addObserver('content.@each.' + this.get('realNameProperty'), this.rerender); + $elem.select2({formatResult: this.comboTemplate, minimumResultsForSearch: 5, width: 'resolve'}); const castInteger = this.get('castInteger'); From 5022507029fe951bb0a8dda8a262dcef2ff4d742 Mon Sep 17 00:00:00 2001 From: Kane York Date: Tue, 30 Jun 2015 16:00:43 -0700 Subject: [PATCH 2/2] Make observing optional --- .../javascripts/discourse/components/combo-box.js.es6 | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/discourse/components/combo-box.js.es6 b/app/assets/javascripts/discourse/components/combo-box.js.es6 index 5ab4807fa1e..5fdd914e825 100644 --- a/app/assets/javascripts/discourse/components/combo-box.js.es6 +++ b/app/assets/javascripts/discourse/components/combo-box.js.es6 @@ -68,9 +68,10 @@ export default Ember.Component.extend({ o.selected = !!$(o).attr('selected'); }); - // Workaround for contentChanged not being able to observe based on - // a passed-in attribute name - this.addObserver('content.@each.' + this.get('realNameProperty'), this.rerender); + // observer for item names changing (optional) + if (this.get('nameChanges')) { + this.addObserver('content.@each.' + this.get('realNameProperty'), this.rerender); + } $elem.select2({formatResult: this.comboTemplate, minimumResultsForSearch: 5, width: 'resolve'});