From 0838b92895e6882180e7e6c420851832ce485ed7 Mon Sep 17 00:00:00 2001 From: Alex Smap Date: Fri, 19 Sep 2014 19:34:21 +0400 Subject: [PATCH] Supports for object data sources label for (key , value) in object select as label for (key , value) in object label group by group for (key, value) in object select as label group by group for (key, value) in object --- angular-selectize.js | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/angular-selectize.js b/angular-selectize.js index 3b4947b..f2d9fee 100644 --- a/angular-selectize.js +++ b/angular-selectize.js @@ -57,6 +57,7 @@ var optionsFn = $parse(optionsExpression); var displayFn = $parse(match[2] || match[1]); var valueFn = $parse(match[2] ? match[1] : valueName); + var objectKey = match[5]; watchParentOptions(); @@ -207,6 +208,15 @@ } } + function arrayObjectIndexOf(arr, obj) { + for (var i = 0; i < arr.length; i++) { + if (angular.equals(arr[i], obj)) { + return i; + } + }; + return -1; + } + function getSelectedItems(model) { model = angular.isArray(model) ? model : [model] || []; @@ -222,8 +232,14 @@ var selections = options.reduce(function(selected, option, index) { var optionValue = getOptionValue(option); - if (model.indexOf(optionValue) >= 0) { - selected[optionValue] = index; + if (angular.isObject(optionValue)) { + if (arrayObjectIndexOf(model, optionValue) >= 0) { + selected[optionValue[objectKey]] = index; + } + } else { + if (model.indexOf(optionValue) >= 0) { + selected[optionValue] = index; + } } return selected; }, {});