From c706666594fbad010b98b0aa4fd1df4e31f22d7b Mon Sep 17 00:00:00 2001 From: a28115665 Date: Sat, 23 Jun 2018 11:41:15 +0800 Subject: [PATCH 1/2] 20180623 add one scope name is getIdProp. Give true or false, then it will return only idProp or not. --- dist/angular-bootstrap-multiselect.js | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/dist/angular-bootstrap-multiselect.js b/dist/angular-bootstrap-multiselect.js index f5fa3c8..3ab8f7c 100644 --- a/dist/angular-bootstrap-multiselect.js +++ b/dist/angular-bootstrap-multiselect.js @@ -30,7 +30,8 @@ labels: '=?', classesBtn: '=?', showTooltip: '=?', - placeholder: '@?' + placeholder: '@?', + getIdProp: '=?' }, require: 'ngModel', templateUrl: 'multiselect.html', @@ -54,6 +55,9 @@ $scope.disabled = true; } + if(typeof $scope.getIdProp == 'undefined'){ + $scope.getIdProp = false; + } var closeHandler = function (event) { if (!$element[0].contains(event.target)) { @@ -111,7 +115,17 @@ }; var watcher = $scope.$watch('selectedOptions', function () { - $ngModelCtrl.$setViewValue(angular.copy($scope.selectedOptions)); + if($scope.selectedOptions != undefined && $scope.getIdProp){ + + var selectedArray = []; + selectedArray = $scope.selectedOptions.map(function (el) { + return $scope.getId(el); + }); + + $ngModelCtrl.$setViewValue(angular.copy(selectedArray)); + }else{ + $ngModelCtrl.$setViewValue(angular.copy($scope.selectedOptions)); + } }, true); $scope.$on('$destroy', function () { From 17f0204e615d0ed9a3c5525484e41d6e537e35da Mon Sep 17 00:00:00 2001 From: a28115665 Date: Sat, 23 Jun 2018 12:09:00 +0800 Subject: [PATCH 2/2] 20180623 add one scope name is getIdProp. Give true or false, then it will return only idProp or not. --- dist/angular-bootstrap-multiselect.js | 6 +++--- dist/angular-bootstrap-multiselect.min.js | 2 +- src/multiselect.js | 18 ++++++++++++++++-- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/dist/angular-bootstrap-multiselect.js b/dist/angular-bootstrap-multiselect.js index 3ab8f7c..3df37d7 100644 --- a/dist/angular-bootstrap-multiselect.js +++ b/dist/angular-bootstrap-multiselect.js @@ -55,7 +55,7 @@ $scope.disabled = true; } - if(typeof $scope.getIdProp == 'undefined'){ + if (typeof $scope.getIdProp == 'undefined') { $scope.getIdProp = false; } @@ -115,7 +115,7 @@ }; var watcher = $scope.$watch('selectedOptions', function () { - if($scope.selectedOptions != undefined && $scope.getIdProp){ + if ($scope.selectedOptions != undefined && $scope.getIdProp) { var selectedArray = []; selectedArray = $scope.selectedOptions.map(function (el) { @@ -123,7 +123,7 @@ }); $ngModelCtrl.$setViewValue(angular.copy(selectedArray)); - }else{ + } else { $ngModelCtrl.$setViewValue(angular.copy($scope.selectedOptions)); } }, true); diff --git a/dist/angular-bootstrap-multiselect.min.js b/dist/angular-bootstrap-multiselect.min.js index 2fe4daf..a80d65a 100644 --- a/dist/angular-bootstrap-multiselect.min.js +++ b/dist/angular-bootstrap-multiselect.min.js @@ -1 +1 @@ -!function(){"use strict";var a=angular.module("btorfs.multiselect",["btorfs.multiselect.templates"]);a.getRecursiveProperty=function(a,b){return b.split(".").reduce(function(a,b){return a?a[b]:null},a)},a.directive("multiselect",["$filter","$document","$log",function(b,c,d){return{restrict:"AE",scope:{options:"=",displayProp:"@",idProp:"@",searchLimit:"=?",selectionLimit:"=?",showSelectAll:"=?",showUnselectAll:"=?",showSearch:"=?",searchFilter:"=?",disabled:"=?ngDisabled",labels:"=?",classesBtn:"=?",showTooltip:"=?",placeholder:"@?"},require:"ngModel",templateUrl:"multiselect.html",controller:["$scope",function(a){angular.isUndefined(a.classesBtn)&&(a.classesBtn=["btn-block","btn-default"])}],link:function(b,e,f,g){b.selectionLimit=b.selectionLimit||0,b.searchLimit=b.searchLimit||25,b.searchFilter="",b.resolvedOptions=[],"function"!=typeof b.options&&(b.resolvedOptions=b.options),"undefined"!=typeof f.disabled&&(b.disabled=!0);var h=function(a){e[0].contains(a.target)||b.$apply(function(){b.open=!1})};c.on("click",h);var i=function(){g.$viewValue?(b.selectedOptions=b.resolvedOptions.filter(function(a){for(var c=b.getId(a),d=0;d1){var a=angular.isDefined(b.selectedOptions)?b.selectedOptions.length:0;return 0===a?b.labels&&b.labels.select?b.labels.select:b.placeholder||"Select":a+" "+(b.labels&&b.labels.itemsSelected?b.labels.itemsSelected:"selected")}return b.labels&&b.labels.select?b.labels.select:b.placeholder||"Select"},b.selectAll=function(){b.selectedOptions=b.resolvedOptions.slice(),b.unselectedOptions=[]},b.unselectAll=function(){b.selectedOptions=[],b.unselectedOptions=b.resolvedOptions.slice()},b.toggleItem=function(a){"undefined"==typeof b.selectedOptions&&(b.selectedOptions=[]);var c=b.selectedOptions.indexOf(a),d=c!==-1;if(d)b.unselectedOptions.push(b.selectedOptions[c]),b.selectedOptions.splice(c,1);else if(!d&&(0===b.selectionLimit||b.selectedOptions.lengthb.searchLimit)return!1;var d=b.getDisplay(c);if(d){var e=d.toLowerCase().indexOf(b.searchFilter.toLowerCase())>-1;return e&&a++,e}}}}}}])}(),angular.module("btorfs.multiselect.templates",["multiselect.html"]),angular.module("multiselect.html",[]).run(["$templateCache",function(a){a.put("multiselect.html",'\n')}]); \ No newline at end of file +!function(){"use strict";var a=angular.module("btorfs.multiselect",["btorfs.multiselect.templates"]);a.getRecursiveProperty=function(a,b){return b.split(".").reduce(function(a,b){return a?a[b]:null},a)},a.directive("multiselect",["$filter","$document","$log",function(b,c,d){return{restrict:"AE",scope:{options:"=",displayProp:"@",idProp:"@",searchLimit:"=?",selectionLimit:"=?",showSelectAll:"=?",showUnselectAll:"=?",showSearch:"=?",searchFilter:"=?",disabled:"=?ngDisabled",labels:"=?",classesBtn:"=?",showTooltip:"=?",placeholder:"@?",getIdProp:"=?"},require:"ngModel",templateUrl:"multiselect.html",controller:["$scope",function(a){angular.isUndefined(a.classesBtn)&&(a.classesBtn=["btn-block","btn-default"])}],link:function(b,e,f,g){b.selectionLimit=b.selectionLimit||0,b.searchLimit=b.searchLimit||25,b.searchFilter="",b.resolvedOptions=[],"function"!=typeof b.options&&(b.resolvedOptions=b.options),"undefined"!=typeof f.disabled&&(b.disabled=!0),"undefined"==typeof b.getIdProp&&(b.getIdProp=!1);var h=function(a){e[0].contains(a.target)||b.$apply(function(){b.open=!1})};c.on("click",h);var i=function(){g.$viewValue?(b.selectedOptions=b.resolvedOptions.filter(function(a){for(var c=b.getId(a),d=0;d1){var a=angular.isDefined(b.selectedOptions)?b.selectedOptions.length:0;return 0===a?b.labels&&b.labels.select?b.labels.select:b.placeholder||"Select":a+" "+(b.labels&&b.labels.itemsSelected?b.labels.itemsSelected:"selected")}return b.labels&&b.labels.select?b.labels.select:b.placeholder||"Select"},b.selectAll=function(){b.selectedOptions=b.resolvedOptions.slice(),b.unselectedOptions=[]},b.unselectAll=function(){b.selectedOptions=[],b.unselectedOptions=b.resolvedOptions.slice()},b.toggleItem=function(a){"undefined"==typeof b.selectedOptions&&(b.selectedOptions=[]);var c=b.selectedOptions.indexOf(a),d=c!==-1;if(d)b.unselectedOptions.push(b.selectedOptions[c]),b.selectedOptions.splice(c,1);else if(!d&&(0===b.selectionLimit||b.selectedOptions.lengthb.searchLimit)return!1;var d=b.getDisplay(c);if(d){var e=d.toLowerCase().indexOf(b.searchFilter.toLowerCase())>-1;return e&&a++,e}}}}}}])}(),angular.module("btorfs.multiselect.templates",["multiselect.html"]),angular.module("multiselect.html",[]).run(["$templateCache",function(a){a.put("multiselect.html",'\n')}]); \ No newline at end of file diff --git a/src/multiselect.js b/src/multiselect.js index ae281fc..18a6f65 100644 --- a/src/multiselect.js +++ b/src/multiselect.js @@ -30,7 +30,8 @@ labels: '=?', classesBtn: '=?', showTooltip: '=?', - placeholder: '@?' + placeholder: '@?', + getIdProp: '=?' }, require: 'ngModel', templateUrl: 'multiselect.html', @@ -54,6 +55,9 @@ $scope.disabled = true; } + if (typeof $scope.getIdProp == 'undefined') { + $scope.getIdProp = false; + } var closeHandler = function (event) { if (!$element[0].contains(event.target)) { @@ -111,7 +115,17 @@ }; var watcher = $scope.$watch('selectedOptions', function () { - $ngModelCtrl.$setViewValue(angular.copy($scope.selectedOptions)); + if ($scope.selectedOptions != undefined && $scope.getIdProp) { + + var selectedArray = []; + selectedArray = $scope.selectedOptions.map(function (el) { + return $scope.getId(el); + }); + + $ngModelCtrl.$setViewValue(angular.copy(selectedArray)); + } else { + $ngModelCtrl.$setViewValue(angular.copy($scope.selectedOptions)); + } }, true); $scope.$on('$destroy', function () {