最新消息:Welcome to the puzzle paradise for programmers! Here, a well-designed puzzle awaits you. From code logic puzzles to algorithmic challenges, each level is closely centered on the programmer's expertise and skills. Whether you're a novice programmer or an experienced tech guru, you'll find your own challenges on this site. In the process of solving puzzles, you can not only exercise your thinking skills, but also deepen your understanding and application of programming knowledge. Come to start this puzzle journey full of wisdom and challenges, with many programmers to compete with each other and show your programming wisdom! Translated with DeepL.com (free version)

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

matteradmin7PV0评论
  • 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.

Post a comment

comment list (0)

  1. No comments so far