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

我正在使用Angular JS,我需要使用angularJS来设置下拉列表控件的选定选项。 原谅我,如果这是荒谬的,但我是新的angularJS

这是我的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"的控件被选中?

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

如果variants是一个对象数组, item.selectedVariant必须将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”项被选中。

我不知道这是否会帮助任何人,但因为我面临同样的问题,我想分享我如何得到解决scheme。

您可以在ng-options使用track by属性。

假设你有:

 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" 

希望这将有助于未来的人。

如果将值0赋值给item.selectedVariant则应该自动select它。 查看http://docs.angularjs.org/api/ng.directive:select上的示例,默认情况下只需分配;$scope.color='red'即可select红色。

我在这里看到已经写好的答案,但有时写在其他forms的相同可以有所帮助

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

它可以是有用的。 绑定不总是工作。

 <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服务填充选项列表源模型。 选定的值在填充列表中已知并已设置。 用$ http list选项执行rest-request之后,就可以完成了。 但是select的选项没有设置。 由于未知的原因AngularJS在阴影$摘要执行不绑定select,因为它将是。 我必须使用JQuery来设置select。 这很重要! Angular在shadow中为ng-repeat 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); } }); } 

简单的方法

如果你有一个用户作为响应或你定义的Array / 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> 
Interesting Posts