isteven / angular-multi-select

A multi select dropdown directive for AngularJS. Allows you to use HTML tags and CSS in the data. Requires only AngularJS and nothing else.
isteven.github.io/angular-multi-select
MIT License
1.08k stars 518 forks source link

Reset doesn't set all values' 'ticked' property to false #556

Open elenaem26 opened 6 years ago

elenaem26 commented 6 years ago

What should i do, if i want to set default values (i.e. set ticked = true on several values) on the start, but by clicking reset i want to set all the values to ticked = false? Because for now, as i see in the code isteven-multi-select.js(4.0.0) when reset is clicked, the input model goes back to $scope.backUp which holds this default values with ticked = true.

P.S. onReset function doesn't save the day - even if i set all 'ticked' properties to false in the function, values from $scope.backUp are assigned to the input model (and $scope.backUp holds these true 'ticked' properties on some values) when reset is called.

pankajparkar commented 6 years ago

I guess, you misunderstood reset button behaviour. Over here what "Reset" button does is, suppose you had initially 5 items selected(stored in a copy) on page load, and later unselected 2 items existing and selected 1 more new item, now total you have 4 items select. As soon as you click on Reset button it revert to the initial state of your dropdown. That means it will select those 5 items which were initially selected.

For you to make your stuff working.

  1. Keep hook on on-reset function like on-reset="onReset()"
  2. Inside controller's onReset function modify tick value to false manually. $scope.onReset = function() { $scope.inputModel.forEach(item => item.ticked = false); }
igor-h commented 5 years ago

When I change externaly selected elements:

output-model="selectedCategories"

In my case selectedCategories, and when I open again the multi-select, then it's selected automaticaly old values.

How I can solve it?

I use this code for change the output-model <button class="btn btn-primary" type="button" ng-click="selectedCategories.pop();">Deselect last category</button>

EDIT: Fixed with: ng-click="listCategories[0].selected=false;