如何禁用 Angular JS 中的选项?

How to disable option in Angular JS?

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

ng-disabled 仅用于 input 元素:

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

Angular Docs

你需要在这里使用 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 并且在进行比较时会更容易。

标记

<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

使用此代码

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

see this code