如何在Angular JS中禁用选项?

时间:2015-09-14 17:48:38

标签: angularjs select ng-repeat ng-options angularjs-ng-options

我有ng-repeat选项:

<option ng-repeat="year in data.dateList.year" value="{{year.id}}" ng-disabled="(year.id < 2015) ?  true : false">

您可以看到ng-disabled="(year.id < 2015) ? true : false"

为什么year.id低于2015年我的选项未被停用?

这是我的新代码:

<div class="itm" ng-repeat="a in range(num) track by $index">
   <option ng-repeat="year in data.dateList.year" ng-disabled="(year.id) < formData.beginYear[$index]">
      {{year.value}}
   </option>
</div>

3 个答案:

答案 0 :(得分:4)

你需要在这里使用ng-options来禁用选项

<select ng-model="year"
  ng-options="year.id disable when (year.id < 2015) for year in data.dateList.year">
</select>

<强>更新

对于两个输入字段相互依赖,您可以像下面这样做。主要问题是当你进行比较时它是字符串,因为value属性将值转换为string格式。您可以使用ng-options保留dataType的值&amp;在进行比较时会更容易。

<强>标记

<select ng-model="yr[$index]" 
   ng-options="year.id as year.id for year in years">
</select>

<select ng-model="year" 
   ng-options="year.id disable when (year.id < yr[$index]) for year in years">
</select>

Demo Plunkr

答案 1 :(得分:1)

ng-disabled 仅适用于input元素:

<INPUT
  ng-disabled="expression">
...
</INPUT>

Angular Docs

答案 2 :(得分:1)

使用此代码

<option ng-repeat="year in data.dateList.year track by $index" ng-disabled="(year.id) < 2015">{{year.id}}</option>

see this code