如何使用角度 JS 设置下拉列表控件的选项

我使用角 JS,我需要设置一个下拉列表控件使用角 JS 选择的选项。原谅我,如果这是荒谬的,但我是新的角 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 &amp;&amp; item.quantity &gt; 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"的控件?

532428 次浏览

我希望能够理解您的问题,但是 ng-model指令在控件中的选定项和 item.selectedVariant的值之间创建了一个双向绑定。这意味着更改 JavaScript 中的 item.selectedVariant或更改控件中的值会更新另一个。如果 item.selectedVariant的值为 0,则应该选择该项。

如果 variants是一个对象数组,则必须将 item.selectedVariant设置为这些对象之一。我不知道你在你的范围内有什么信息,但这里有一个例子:

约翰逊:

$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”项被选中。

如果您赋值0到 item.selectedVariant,它应该被自动选择。 通过简单地分配 $scope.color='red',查看 http://docs.angularjs.org/api/ng.directive:select上默认选择红色的示例。

我看到这里已经写了很好的答案,但是有时候以其他形式写同样的答案可能会有帮助

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

我不知道这是否会对任何人有帮助,但由于我面临着同样的问题,我想分享我是如何得到解决方案的。

可以在 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"

希望以后能帮到别人。

很简单

如果您有一个用户作为响应或一个数组/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 中填写选项列表源模型。选定的值在填写列表之前已知并被设置。使用 $http 列表选项执行 rest-request 之后。但未设置选定选项。由于未知的原因 AngularJS 在 shadow $摘要执行中没有按照应该的方式选择 bind。我必须使用 JQuery 来设置选择。这很重要!阴影中的角度为由 ng- 重复 optinos 生成的 attr“ value”的值添加前缀。对于 int,它是“ number:”。

$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>

这是我用于设置所选值的代码

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>

在角框架上试试这个

约翰逊:

$scope.options = [
{
name: "a",
id: 1
},
{
name: "b",
id: 2
}
];
$scope.selectedOption = $scope.options[1];