angular ui-select2 не задано значение в режиме редактирования

<select id="e1" style="width:100%" ui-select2  tabindex="-1" ng-init="GetAllAgent()" ng-model="Agent" ng-options="ctr as ctr.AgentName for ctr in ListAgent track by ctr.AgentId" ng-change="GetSubAgentList(Agent.AgentId)">
<option value=""> </option></select>

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

 angular.forEach($scope.ListAgent, function (value, index) {            
            if (value.AgentId == HR.AgentId) {
                $scope.Agent = $scope.ListAgent[index];
            }
        })

 $scope.ListAgent= [{ AgentId: "0", AgentName:"Ann" }, {  AgentId: "1", AgentName:"Muh" }];

а также

HR.AgentId=1

person safeena rasak    schedule 30.09.2017    source источник
comment
пожалуйста, опубликуйте $scope.ListAgent и HR.AgentId или опубликуйте демо в Plunker   -  person Maxim Shoustin    schedule 30.09.2017
comment
Задание отредактировано. Если есть какой-либо другой метод для установки значения dropdwn, пожалуйста, поделитесь   -  person safeena rasak    schedule 30.09.2017


Ответы (1)


Во-первых, ui-select2 не поддерживает ng-options: https://github.com/angular-ui/ui-select2/issues/252

Кроме того, ui-select2 не работает с ng-repeat: https://github.com/angular-ui/ui-select2/issues/162

Решение состоит в том, чтобы использовать input:

 <input ui-select2="select2Options" ng-model="Agent"/>

где select2Options это:

$scope.select2Options = {
  data:$scope.ListAgent
}

Список должен иметь структуру: [{id,text}] будет $scope.ListAgent.

 $scope.ListAgent= [{ id:0, text:"Ann" }, { id:1, text:"Muh" }];

Демонстрационный планкер


Для заполнителя добавьте data-placeholder="----"

person Maxim Shoustin    schedule 30.09.2017
comment
Но здесь ng-options поддержка ui-select2 и раскрывающийся список работают. Получение AgentId с помощью $scope.Agent.AgentId.. Так почему же режим редактирования не работает как обычно select - person safeena rasak; 02.10.2017
comment
используя ваше решение, когда на странице используется более одного выбора, что будет $scope.select2Options = { data:$scope.ListAgent } - person safeena rasak; 02.10.2017
comment
@safeenarasak $scope.select2Options ... $scope.select2OptionsTwo .... - person Maxim Shoustin; 02.10.2017
comment
если я изменю $scope.ListAgent на из списка БД, используя ` $scope.GetAllAgent = function () { $http({ method: get, url: /api/Agent/GetAllAgent }).then(function (response) { $scope.ListAgent = response.data; }) };` выпадающее меню не может быть привязано - person safeena rasak; 03.10.2017