|
|
@@ -53,10 +53,6 @@ function (angular, $) {
|
|
|
scope.$parent[attrs.tagclass] : function() { return attrs.tagclass; }
|
|
|
});
|
|
|
|
|
|
- for (var i = 0; i < scope.model.length; i++) {
|
|
|
- select.tagsinput('add', scope.model[i]);
|
|
|
- }
|
|
|
-
|
|
|
select.on('itemAdded', function(event) {
|
|
|
if (scope.model.indexOf(event.item) === -1) {
|
|
|
scope.model.push(event.item);
|
|
|
@@ -74,25 +70,16 @@ function (angular, $) {
|
|
|
// diff when model changes
|
|
|
var prev = scope.model.slice();
|
|
|
scope.$watch("model", function() {
|
|
|
-
|
|
|
- var added = scope.model.filter(function(i) {return prev.indexOf(i) === -1;}),
|
|
|
- removed = prev.filter(function(i) {return scope.model.indexOf(i) === -1;}),
|
|
|
- i;
|
|
|
-
|
|
|
- prev = scope.model.slice();
|
|
|
-
|
|
|
- // Remove tags no longer in binded model
|
|
|
- for (i = 0; i < removed.length; i++) {
|
|
|
- select.tagsinput('remove', removed[i]);
|
|
|
+ if (!angular.isArray(scope.model)) {
|
|
|
+ scope.model = [];
|
|
|
}
|
|
|
|
|
|
- // Refresh remaining tags
|
|
|
- select.tagsinput('refresh');
|
|
|
+ select.tagsinput('removeAll');
|
|
|
|
|
|
- // Add new items in model as tags
|
|
|
- for (i = 0; i < added.length; i++) {
|
|
|
- select.tagsinput('add', added[i]);
|
|
|
+ for (var i = 0; i < scope.model.length; i++) {
|
|
|
+ select.tagsinput('add', scope.model[i]);
|
|
|
}
|
|
|
+
|
|
|
}, true);
|
|
|
|
|
|
}
|