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

I'm trying to display on screen html controls using Meta-Data stored in json file.Also I'm tr

  • I'm trying to display on screen html controls using Meta-Data stored in json file.
  • Also I'm trying to create a state where pressing check box that will make a drop down disabled.
    • I was managed to achieve this for a select box with static options and a select box with dynamic options (using ng-options).
    • I could not achieve this when wrapping it with ng-repeat.

I have spent a lot of time making this work but in vane.

I would appreciate if someone could pin point me to the right direction.

I have created a sample code which can be found in Plunker here

  • I'm trying to display on screen html controls using Meta-Data stored in json file.
  • Also I'm trying to create a state where pressing check box that will make a drop down disabled.
    • I was managed to achieve this for a select box with static options and a select box with dynamic options (using ng-options).
    • I could not achieve this when wrapping it with ng-repeat.

I have spent a lot of time making this work but in vane.

I would appreciate if someone could pin point me to the right direction.

I have created a sample code which can be found in Plunker here

Share Improve this question asked Aug 7, 2013 at 5:16 ScriptionScription 6453 gold badges12 silver badges21 bronze badges 0
Add a ment  | 

2 Answers 2

Reset to default 1

From ngRepeat doc:

The ngRepeat directive instantiates a template once per item from a collection. Each template instance gets its own scope

The trick is to add controlChecked to form and remove the ng-init. So they will be in the same scope.

<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

from http://docs.angularjs/api/ng.directive:ngRepeat:

The ngRepeat directive instantiates a template once per item from a collection. Each template instance gets its own scope.

so it looks like you should use the $parent scope: $parent.controlChecked.

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745660788a4638823.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信