повторяющийся элемент, отображаемый в списке выбора пользовательского интерфейса, при динамическом обновлении новых значений и изменении выбранного значения в множественном выборе пользовательского интерфейса (angular js)

невозможно обновить новые значения и изменить выбранные значения в пользовательском интерфейсе, выбрать динамически обновляемые значения, дублирующиеся внутри списка

я добавил получить сотрудников, чтобы обновить модель и обновить сотрудника для добавления новых данных и предварительного выбора этих значений.

что я сделал

  • создал кнопку добавления модели, которая будет заполнять значения внутри uiselect.
  • создал кнопку обновления модели, чтобы добавить новое значение и изменить его по мере выбора

  • при нажатии кнопки «Добавить модель» она отображается как item1, item2 и item3.
  • при нажатии модели обновления он добавит новый элемент "item4" и сделает его выбранным

Проблема заключается в том, что элемент 4 выбирается, но также отображается в списке для выбора


ссылка на plunkr приведена ниже:

 <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;});

[ссылка на планк] [1]

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


person Everdan    schedule 12.08.2015    source источник
comment
Ваша ссылка на plunkr не работает.   -  person Roman Koliada    schedule 12.08.2015
comment
Похоже, это работает для меня.   -  person Tj Gienger    schedule 13.08.2015
comment
Тест нового вставленного значения @Tj Gienger выбирается при нажатии кнопки «Обновить», как и ожидалось, но проблема в том, что он также отображается в раскрывающемся списке. Решил проблему, изменив push на concat, чтобы добавить новый элемент -   -  person Everdan    schedule 13.08.2015


Ответы (1)


    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);

Изменение push на concat сработало для меня. спасибо всем, кто пытался мне помочь

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

person Everdan    schedule 13.08.2015