Angularjs按下ng-repeat内的复选框时禁用下拉列表

时间:2013-08-07 05:16:55

标签: javascript angularjs angularjs-ng-repeat ng-show

  • 我正在尝试使用存储在json文件中的元数据在屏幕上显示html控件。
  • 此外,我正在尝试创建一个状态,按下复选框将禁用下拉列表。
    • 我设法通过静态选项和带有动态选项的选择框(使用ng-options)实现此选项。
    • ng-repeat 包装它时,我无法实现这一点。

我花了很多时间做这项工作,但是在风向标中。

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

我创建了一个示例代码,可以在 Plunker here

中找到

2 个答案:

答案 0 :(得分:1)

来自ngRepeat doc:

  

ngRepeat指令从a中为每个项目实例化一次模板   采集。每个模板实例都有自己的范围

诀窍是将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>

Demo

答案 1 :(得分:0)

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

ngRepeat指令从集合中为每个项目实例化一次模板。每个模板实例都有自己的范围。

所以看起来您应该使用$parent范围:$parent.controlChecked