Angular JS:带有ng-repeat选项的选择菜单中的默认值

时间:2016-11-14 18:08:52

标签: javascript angularjs ng-options

我试图按照Angular 1.4.12文档中的示例和我在此处找到的内容,仍然无法为选择菜单设置默认值。

我的HTML(使用controller as的{​​{1}}):

mob

正确地给了我一个菜单:

enter image description here

我的json是一个对象数组:

<select name="userCurrencyType" 
   ng-model="mob.currencyType" 
   ng-options="s.name + ' - ' + s.code for s in mob.currencyTypes"></select>

我希望默认菜单项是第一项(USD)。我尝试将[{ "code": "USD", "name": "United States Dollar" }, { "code": "GBP", "name": "United Kingdom Pound" }...] 设置为ng-model并在控制器中将其设置为:

mob.currencyType

  _this.currencyType = _this.currencyTypes[0];

这两种方法都没有给我一个默认值集。我错过了什么?

更新

经过其他用户的一些好建议,以及一些实验,似乎问题是我的数据服务调用没有返回承诺:

_this.currencyType = { "code": "USD", "name": "United States Dollar" }

所以我添加了

  _this.currencyTypes = MockDataFactory.query({ filename: 'currency_codes' });

然后

 _this.currencyTypes.$promise.then(function () {
    init();
  });

2 个答案:

答案 0 :(得分:0)

您可以使用ng-init

进行设置
<select ng-model="currency" ng-init="currency='United States Dollar'"   ng-options="code.name as code.name for code in currencyTypes">
</select>

<强> DEMO

答案 1 :(得分:0)

你所拥有的一切都很好,只需包括一条曲目:

<select name="userCurrencyType" 
ng-model="mob.currencyType" 
ng-options="s.name + ' - ' + s.code for s in mob.currencyTypes track by s.code"></select>
相关问题