Подтвердить что ты не робот

AngularJS - добавлен дополнительный пустой параметр с использованием ng-repeat в теге select

У меня есть список, который я создаю с помощью select, используя AngularJS ng-repeat. Список будет создан правильно, и когда я выберу один из элементов и нажму кнопку, я перейду к функции и буду иметь нужную информацию.

Мой код html выглядит следующим образом:

<select size="6" ng-model="item" ng-options="s.name for s in itemlist"></select>
<button class="btn tt-btn-blue" ng-model="singleModel" ng-click="onLoadClicked(item.id)">Load</button>

Моя проблема заключается в том, что при рисовании списка отображается один элемент в верхней части, который пуст. Когда я проверяю список во время выполнения в Chrome, я получаю следующий вывод в консоли:

<select size="6" ng-model="item" ng-options="s.name for s in itemlist" class="ng-pristine ng-valid">
<option value="?" selected="selected"></option>
<option value="0">Item 1</option>
<option value="1">Item 2</option>
<option value="2">Item 3</option>
<option value="3">Item 4</option>
<option value="4">Item 5</option>
<option value="5">Item 6</option>
</select>

Мне интересно, как я могу избавиться от первого варианта, вставленного ng-repeat. Я не хочу видеть пустое место в верхней части списка. Я понимаю, что одним из вариантов было бы установить первый фактический параметр (value = "0" ) в качестве выбранного элемента, но я бы предпочел, чтобы не было выбранных элементов для запуска.

4b9b3361

Ответ 1

Всякий раз, когда вы видите <option value="?" selected="selected"></option> в выборе, это означает, что ваш ng-model установлен в значение, которое не находится в ng-options. Итак, если вы не хотите пустую опцию, вам нужно убедиться, что item установлено в значение itemlist. Это может быть так же просто, как наличие следующего в вашем контроллере:

$scope.item = $scope.itemlist[0];

Это даст ему фактическое значение, а затем angular обновит его для вас после этого.

Ответ 2

Простейший способ убедиться, что автоматически добавленная опция angular скрыта, - это директива ng-if.

<select ng-options="option.id as option.description for option in Options">
    <option value="" ng-if="false"></option>
</select>

Ответ 3

Я нашел решение после длинного RND Пожалуйста, найдите следующий код, который будет работать для вас.

Вот код HTML

<div class="col-xs-3" ng-controller="GetUserADDetails">
            <label>Region</label>
                <select id="DDLRegion" ng-model="selectedregion" class="form-control" ng-change="getBranched(selectedregion)">   
                                <option value="" >--Select Region--</option>                                 
                                <option ng-repeat="region in Regions" value="{{region.LookupID}}">{{region.LookupValue}}</option>
                  </select>
 </div>

Вот код модуля

var app = angular.module("UserMasterModel", [])
        .controller("GetUserADDetails", function ($scope, $http,$log) {
         $http({
                method: 'GET',
                url: '/UserMaster/GetAllRegion'
            })
            .then(function (response) {
                $scope.Regions = response.data;                        
                //$log.info(response);
            });

});