Everdan
Everdan

Reputation: 41

duplicate item showing in ui-select list, when dynamically updating new values and changing selected value in ui-select multiple (angular js)

unable to update new values and changing selected values in ui-select dynamically updated values duplicating inside the list

i have added get employees to update the model and update employee for add new data and preselect that values.

what i have done is


Issue is item4 is getting selected but it is also showing in the list for selection


plunkr link given below http://plnkr.co/edit/RCEQeSp00QhnLl4wegpz?p=preview

 <ui-select style="width: 800px;" ng-disabled="disabled" theme="select2" ng-model="vm.employees.selected" multiple="">
  <ui-select-match placeholder="Select employee...">{{$item.name}} <{{$item.city}}></ui-select-match>
  <ui-select-choices refresh-delay="0" refresh="vm.getdata($select.search)" repeat="employee.id as employee in vm.employees | propsFilter: {name: $select.search}  ">
    <div ng-bind-html="employee.name | highlight: $select.search"></div>
    <small>
    name: {{employee.name}}
    city:           <span ng-bind-html="''+employee.city | highlight: $select.search"></span>
    </small>
  </ui-select-choices>
</ui-select> 

app.controller('DemoCtrl', function($http) {
var vm = this;
vm.name = 'World';

function getemployee() {
    var employees = [];
    $http.get('employees.json').success(function(data) {

        vm.employees = data;
    });
}

vm.updateemployee = function() {
    console.log(vm.employees);

    vm.selvalues = vm.employees.selected;
    vm.employees.selected = undefined;
    vm.employees.push({
        id: 9,
        name: "test",
        city: "chennai",
        state: "TN"
    });
    vm.selvalues.push(9);
    vm.employees.selected = vm.selvalues;
    console.log(vm.employees);
    console.log(vm.employees.selected);
}

vm.getdata = function(query) {
    console.log(vm.employees);

    console.log(vm.employees.selected);

}

vm.employees = {};
vm.selvalues = [];
vm.employees.selected = [];
vm.employees = [];
vm.getemployee = getemployee;});

[plunkr link][1]

http://plnkr.co/edit/RCEQeSp00QhnLl4wegpz?p=preview

Upvotes: 1

Views: 2122

Answers (1)

Everdan
Everdan

Reputation: 41

    vm.selvalues= vm.employees.selected;
 vm.employees.selected=undefined;
 vm.employees=vm.employees.concat({id:9,name:"test",city:"chennai",state:"TN"});    
 vm.employees.selected = vm.selvalues.concat(9);

Changing push to concat worked for me. thanks for all who tried to help me

http://plnkr.co/edit/5za5SpGfXx4z2Jy7AocN?p=preview

Upvotes: 1

Related Questions