Angularjs在按下ng repeat内的复选框时禁用下拉菜单

Angularjs Make drop down disabled when pressing checkbox inside ng-repeat

本文关键字:复选框 下拉菜单 ng repeat Angularjs      更新时间:2023-09-26
  • 我正在尝试使用存储在json文件中的元数据在屏幕上显示html控件
  • 此外,我正在尝试创建一个状态,按下复选框将禁用下拉菜单。
    • 我成功地为一个带有静态选项的选择框和一个带有动态选择框(使用ng选项)实现了这一点
    • 当我用ng repeat包装它时,我无法实现这一点

我花了很多时间做这项工作,但在vane。

如果有人能指引我正确的方向,我将不胜感激。

我已经创建了一个示例代码,可以在Plunker此处的

中找到

来自ngRepeat文档:

ngRepeat指令从收集每个模板实例都有自己的作用域

诀窍是将controlChecked添加到form并移除ng-init。因此,它们将处于相同的范围内。

<div ng-show="control.type == 'Checkbox'">
    <input type="checkbox" ng-model="form.controlChecked" name="{{control.id}}"/>
</div>
<div ng-show="control.type == 'DropdownList'">
     <select    ng-model="control.id" 
                ng-disabled="!form.controlChecked"
                ng-options="value.code as value.name for value in control.items" 
                name="{{control.id}}"
                >
    </select>

演示

来自http://docs.angularjs.org/api/ng.directive:ngRepeat:

ngRepeat指令为集合中的每个项实例化一个模板。每个模板实例都有自己的作用域。

所以看起来应该使用$parent作用域:$parent.controlChecked