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

Angularjs 如何使用angular JS设置下拉列表控件的选定选项,angularjs,drop-down-menu,angular-ngmodel,selected,Angularjs,Drop Down Menu,Angular Ngmodel,Selected,我正在使用Angular JS,我需要使用Angular 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="calcu

我正在使用Angular JS,我需要使用Angular 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>

一组6个特征
5整套

如何设置要选择的
value=“0”
控件?

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

如果
variants
是一个对象数组,则必须将
item.selectedVariant
设置为这些对象之一。我不知道您的范围内有哪些信息,但以下是一个示例:

JS:

HTML:



这将保留要选择的“b”项。

如果将值0赋给
项。selectedVariant
应自动选择它。
查看默认情况下通过简单分配
$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>

函数MyCtrl($scope){
$scope.organizations=['a','b','c','d','e'];
$scope.reference={
组织:$scope.organizations[2]
};
}

我不知道这是否对任何人都有帮助,但当我面临同样的问题时,我想分享一下我是如何得到解决方案的

您可以在
ng选项中使用track by属性

假设您有:

variants:[{'id':0, name:'set of 6 traits'}, {'id':1, name:'5 complete sets'}]
您可以提及您的
ng选项

ng-options="v.name for v in variants track by v.id"
希望这对将来的人有所帮助。

简单的方法 如果您有一个Users作为响应或定义的Array/JSON,首先需要在controller中设置所选的值,然后在html中输入相同的模型名。我写这个例子是为了用最简单的方式解释。
简单示例
内部控制器:

$scope.Users = ["Suresh","Mahesh","Ramesh"]; 
$scope.selectedUser = $scope.Users[0];
$scope.JSON = {
       "ResponseObject":
           [{
               "Name": "Suresh",
               "userID": 1
           },
           {
               "Name": "Mahesh",
               "userID": 2
           }]
   };
   $scope.selectedUser = $scope.JSON.ResponseObject[0];
你的HTML

<select data-ng-options="usr for usr in Users" data-ng-model="selectedUser">
</select>
<select data-ng-options="usr.Name for usr in JSON.ResponseObject" data-ng-model="selectedUser"></select>
<h3>You selected: {{selectedUser.Name}}</h3>    
你的HTML

<select data-ng-options="usr for usr in Users" data-ng-model="selectedUser">
</select>
<select data-ng-options="usr.Name for usr in JSON.ResponseObject" data-ng-model="selectedUser"></select>
<h3>You selected: {{selectedUser.Name}}</h3>    

您选择:{{selectedUser.Name}

它是有用的。绑定并不总是有效的

<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>
请尝试以下操作:

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”:“albana”},{“value”:“AD”,“group”:“A”,“text”:“andror”},{“value”:“AO”,“group”:“A”,“text”:“安哥拉”},{“value”:“AR”,“group”:“A”,“text”:“阿根廷”},{“value”:“AD”,“value”:“A”,“value”:“AM”,“集团”:“A”,“文本”:“亚美尼亚”},{“价值”:“AW”,“集团”:“A”,“文本”:“阿鲁巴”},{“价值”:“AU”,“集团”:“A”,“文本”:“澳大利亚”},{“价值”:“AT”,“集团”:“A”,“文本”:“奥地利”},{“价值”:“AZ”,“集团”:“A”,“文本”:“阿塞拜疆”});
对于(var j=0;j

国家
选择。。。
{{country.text}
JS:

$scope.options=[
{
名称:“a”,
身份证号码:1
},
{
名称:“b”,
身份证号码:2
}
];
$scope.selectedOption=$scope.options[1];

我有一个名为order.js的控件文件,因此html名称与控件所在的order.html名称相同。我应该在那里设置selectedVariant还是直接在控件上设置?通常您会在控制器中的
$scope
变量上设置这些内容。因此,假设您在单个作用域中,在控制器中可以说
$scope。item.selectedVariant=0
,以设置默认的选定值。您也可以使用该指令直接在控件上以HTML格式设置变量,但在我看来,这会变得相当混乱!您能否详细说明
variants
在您的范围内是什么?您必须将
item.selectedVariant
精确地设置为
variants
$scope.item.selectedVariant=0;如果我将页面放入控件文件中,这将导致页面中断。您可以使用ng init提供语法吗?我在哪里设置item.selectedVariant?如果我定义$scope.item.selectedVariant=0;在文件的控件中,角度中断是否也可以粘贴匹配的html?我认为每个项都在或中derGrid需要将selectedVariant设置为0您能提供一个示例代码吗?我不熟悉angular抱歉
6个特征的集合
如果我有一个多选下拉列表会怎么样。简单地在模型中设置ID是不起作用的是!最后!谢谢您太好了。为了动态执行此操作,我错过了轨迹。最后!我的问题通过放置跟踪依据解决问题。谢谢!这是我缺少的!我正在正确设置绑定到
ngModel
的范围字段,但直到我添加
跟踪依据时它才起作用。
!谢谢!已经有一个很好的解决方案,它可以解决问题,并且已经被OP接受。
<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>