2013-10-16 27 views
2

我正在做ng-repeat从数组中输出复选框。angularjs访问ng-repeat复选框

<div class="row-fluid"> 
    <label ng-repeat="checkbox_ in checkboxes" class="checkbox" 
     for="checkbox_{{$index}}"> 
      <input name="checkbox_{{$index}}" id="checkbox_{{$index}}" 
       ng-model="checkbox_.checked" 
       ng-true-value="{checkbox_.value}" 
       type="checkbox"> 
      {{checkbox_.text}} 
    </label> 
</div> 

数据

$scope.checkboxes = [ 
    {"text": "text1", checked:false}, 
    {"text": "text2", checked:false}, 
    {"text": "text3", checked:false}, 
    {"text": "text4", checked:false} 
]; 

之后,我想访问checkbox_1例如...

<hr> 
checkbox_1.checked - {{checkbox_1.checked}}<br> 
checkbox_1.value - {{checkbox_1.value}}<br> 
checkboxes[1].checked - {{checkboxes[1].checked}}<br> 
checkboxes[1].value - {{checkboxess[1].value}}<br>checkbox_1.value - {{checkbox_1.value}}<br> 

<div ng-show="checkboxes[1].checked">on</div> 

并没有任何反应 http://jsfiddle.net/MQzGP/3/

如何获得访问当用户将它设置为true时,checkbox1值'text2'? ty

回答

4

你要这样呢?

you selected <span ng-show="checkboxes[0].checked"> {{checkboxes[0].text}}</span> 
<span ng-show="checkboxes[1].checked"> {{checkboxes[1].text}}</span> 

DEMO

或动态使用NG-重复做:

you selected <span ng-repeat="checkbox_ in checkboxes" ng-show="checkbox_.checked"> {{checkbox_.text}}</span> 

DEMO

分离关注与MVC结构像angularjs一起工作的正确途径。您不应该直接访问您的DOM复选框以获取其检查状态和文本,而不是访问模型。

+0

yes!感谢您对conecpt的解释) – Sol

1

你的代码很好 - 除了JS中的数组从0开始索引,所以你应该有checkboxes [0] .checked。

BTW - 调试我建议使用

<pre>{{checkboxes | json}}</pre> 
+0

但我想访问checkbox_1而不是复选框[1]?它的ng_true_value在哪里? – Sol

+0

检查我想要这样做

您选择了{{checkboxes [1] .value +''+ checkboxes [2] .value}}

并且用户应该看到这个“You selected text2 text4” – Sol