From 5c42810813581746da0dd94fadb6ab4de0fb6311 Mon Sep 17 00:00:00 2001 From: Sovattha SOK Date: Thu, 26 Nov 2015 15:46:37 +0100 Subject: [PATCH 1/2] Enhance support of track by Simple support of track by, based on the work of marianocarpentier (https://github.com/joaoneto/angular-bootstrap-select/pull/52) --- src/angular-bootstrap-select.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/angular-bootstrap-select.js b/src/angular-bootstrap-select.js index 67d80aa..9b4d9b6 100644 --- a/src/angular-bootstrap-select.js +++ b/src/angular-bootstrap-select.js @@ -181,7 +181,13 @@ function selectpickerDirective($parse, $timeout) { link: function (scope, element, attrs) { function refresh(newVal) { scope.$applyAsync(function () { - if (attrs.ngOptions && /track by/.test(attrs.ngOptions)) element.val(newVal); + if (/track by/.test(attrs.ngOptions)) { + var trackBy = attrs.ngOptions.substr(attrs.ngOptions.indexOf('track by')); + trackBy = trackBy.substring(trackBy.indexOf('.') + 1); + element.val(newVal[trackBy]); + } else { + element.val(newVal); + } element.selectpicker('refresh'); }); } From 2ec11bd2f1ed34d25b7728a9908dff28212bafd7 Mon Sep 17 00:00:00 2001 From: Sovattha SOK Date: Fri, 27 Nov 2015 09:43:03 +0100 Subject: [PATCH 2/2] Wrap element inside jQuery selector jQuery is loaded with Bootstrap, it makes sense to wrap it here --- src/angular-bootstrap-select.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/angular-bootstrap-select.js b/src/angular-bootstrap-select.js index 9b4d9b6..400bd7c 100644 --- a/src/angular-bootstrap-select.js +++ b/src/angular-bootstrap-select.js @@ -188,7 +188,7 @@ function selectpickerDirective($parse, $timeout) { } else { element.val(newVal); } - element.selectpicker('refresh'); + $(element).selectpicker('refresh'); }); } @@ -197,13 +197,13 @@ function selectpickerDirective($parse, $timeout) { element.data('selectpicker').$button.removeClass(function (i, c) { return (c.match(/(^|\s)?btn-\S+/g) || []).join(' '); }); - element.selectpicker('setStyle', val); + $(element).selectpicker('setStyle', val); }); }); $timeout(function () { - element.selectpicker($parse(attrs.selectpicker)()); - element.selectpicker('refresh'); + $(element).selectpicker($parse(attrs.selectpicker)()); + $(element).selectpicker('refresh'); }); if (attrs.ngModel) { @@ -216,7 +216,7 @@ function selectpickerDirective($parse, $timeout) { scope.$on('$destroy', function () { $timeout(function () { - element.selectpicker('destroy'); + $(element).selectpicker('destroy'); }); }); }