Я использую Angular JS, и мне нужно установить выбранную опцию раскрывающегося списка с помощью angular JS. Простите меня, если это смешно, но я новичок в Angular JS
Вот выпадающий список моего html
<select ng-required="item.id==8 && item.quantity > 0" name="posterVariants"
ng-show="item.id==8" ng-model="item.selectedVariant"
ng-change="calculateServicesSubTotal(item)"
ng-options="v.name for v in variants | filter:{type:2}">
</select>
После заполнения я получаю
<select ng-options="v.name for v in variants | filter:{type:2}" ng-change="calculateServicesSubTotal(item)"
ng-model="item.selectedVariant" ng-show="item.id==8" name="posterVariants"
ng-required="item.id==8 && item.quantity > 0" class="ng-pristine ng-valid ng-valid-required">
<option value="?" selected="selected"></option>
<option value="0">set of 6 traits</option>
<option value="1">5 complete sets</option>
</select>
Как я могу установить элемент управления для value="0"
выбора?
<option value="0" ng-selected="true">set of 6 traits</option>
Ответы:
Надеюсь, я понял ваш вопрос, но
ng-model
директива создает двустороннюю привязку между выбранным элементом в элементе управления и значениемitem.selectedVariant
. Это означает, что изменениеitem.selectedVariant
в JavaScript или изменение значения в элементе управления обновляет другое. Еслиitem.selectedVariant
имеет значение0
, этот элемент должен быть выбран.Если
variants
- это массив объектов,item.selectedVariant
должен быть установлен один из этих объектов. Я не знаю, какая информация у вас есть, но вот пример:JS:
$scope.options = [{ name: "a", id: 1 }, { name: "b", id: 2 }]; $scope.selectedOption = $scope.options[1];
HTML:
<select data-ng-options="o.name for o in options" data-ng-model="selectedOption"></select>
Это оставит выбор пункта «b».
источник
$scope
переменной. Итак, если вы находитесь в одной области, в вашем контроллере можно сказать$scope.item.selectedVariant = 0
, чтобы установить выбранное значение по умолчанию. Вы также можете установить переменную непосредственно в элементе управления в HTML, используя директиву ng-init , но, на мой взгляд, это становится довольно запутанным!variants
входит в ваш прицел? Вам нужно будетitem.selectedVariant
точно установить значениеvariants
.Я не знаю, поможет ли это кому-то или нет, но поскольку я столкнулся с той же проблемой, я подумал рассказать, как я получил решение.
Вы можете использовать трек по атрибуту в вашем
ng-options
.Предположим, что у вас есть:
variants:[{'id':0, name:'set of 6 traits'}, {'id':1, name:'5 complete sets'}]
Вы можете указать свой
ng-options
как:ng-options="v.name for v in variants track by v.id"
Надеюсь, это поможет кому-то в будущем.
источник
ngModel
правильно устанавливал поле области видимости , но оно не работало, пока я не добавилtrack by
! Спасибо!Если присвоить ему значение 0,
item.selectedVariant
он должен выбираться автоматически. Посмотрите образец на http://docs.angularjs.org/api/ng.directive:select, который выбирает красный цвет по умолчанию, просто назначая$scope.color='red'
.источник
Я вижу, здесь уже написаны хорошие ответы, но когда-нибудь написать то же самое в другой форме может быть полезно
<div ng-app ng-controller="MyCtrl"> <select ng-model="referral.organization" ng-options="c for c in organizations"></select> </div> <script type='text/javascript'> function MyCtrl($scope) { $scope.organizations = ['a', 'b', 'c', 'd', 'e']; $scope.referral = { organization: $scope.organizations[2] }; } </script>
источник
Простой способ
Если у вас есть пользователи в качестве ответа или массив / JSON, который вы определили, сначала вам нужно установить выбранное значение в контроллере, а затем вы поместите то же имя модели в html. Этот пример я написал для простейшего объяснения.
Простой пример
внутри контроллера:
$scope.Users = ["Suresh","Mahesh","Ramesh"]; $scope.selectedUser = $scope.Users[0];
Ваш HTML
<select data-ng-options="usr for usr in Users" data-ng-model="selectedUser"> </select>
сложный пример
внутри контроллера:
$scope.JSON = { "ResponseObject": [{ "Name": "Suresh", "userID": 1 }, { "Name": "Mahesh", "userID": 2 }] }; $scope.selectedUser = $scope.JSON.ResponseObject[0];
Ваш HTML
<select data-ng-options="usr.Name for usr in JSON.ResponseObject" data-ng-model="selectedUser"></select> <h3>You selected: {{selectedUser.Name}}</h3>
источник
Это может быть полезно. Привязки дозировки не всегда работают.
<select id="product" class="form-control" name="product" required ng-model="issue.productId" ng-change="getProductVersions()" ng-options="p.id as p.shortName for p in products"> </select>
Например. Вы заполняете список опций исходной модели из rest-service. Выбранное значение было известно до заполнения списка и было установлено. После выполнения rest-запроса с опцией $ http list будет выполнена. Но выбранный вариант не установлен. По неизвестным причинам AngularJS при выполнении shadow $ digest не привязан к выбранному, как это должно быть. Я должен использовать JQuery для установки выбранного. Важно! Angular в тени добавляет префикс к значению attr "value" для генерируемых оптино ng-repeat. Для int это «число:».
$scope.issue.productId = productId; function activate() { $http.get('/product/list') .then(function (response) { $scope.products = response.data; if (productId) { console.log("" + $("#product option").length);//for clarity $timeout(function () { console.log("" + $("#product option").length);//for clarity $('#product').val('number:'+productId); //$scope.issue.productId = productId;//not work at all }, 200); } }); }
источник
Попробуйте следующее:
JS файл
this.options = { languages: [{language: 'English', lg:'en'}, {language:'German', lg:'de'}] }; console.log(signinDetails.language);
HTML файл
<div class="form-group col-sm-6"> <label>Preferred language</label> <select class="form-control" name="right" ng-model="signinDetails.language" ng-init="signinDetails.language = options.languages[0]" ng-options="l as l.language for l in options.languages"><option></option> </select> </div>
источник
JS:
$scope.options = [ { name: "a", id: 1 }, { name: "b", id: 2 } ]; $scope.selectedOption = $scope.options[1];
источник
Это код, который я использовал для установленного выбранного значения
countryList: any = [{ "value": "AF", "group": "A", "text": "Afghanistan"}, { "value": "AL", "group": "A", "text": "Albania"}, { "value": "DZ", "group": "A", "text": "Algeria"}, { "value": "AD", "group": "A", "text": "Andorra"}, { "value": "AO", "group": "A", "text": "Angola"}, { "value": "AR", "group": "A", "text": "Argentina"}, { "value": "AM", "group": "A", "text": "Armenia"}, { "value": "AW", "group": "A", "text": "Aruba"}, { "value": "AU", "group": "A", "text": "Australia"}, { "value": "AT", "group": "A", "text": "Austria"}, { "value": "AZ", "group": "A", "text": "Azerbaijan"}]; for (var j = 0; j < countryList.length; j++) { //debugger if (countryList[j].text == "Australia") { console.log(countryList[j].text); countryList[j].isSelected = 'selected'; } }
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script> <label>Country</label> <select class="custom-select col-12" id="Country" name="Country" > <option value="0" selected>Choose...</option> <option *ngFor="let country of countryList" value="{{country.text}}" selected="{{country.isSelected}}" > {{country.text}}</option> </select>
попробуйте это на угловой платформе
источник