【发布时间】:2014-06-09 10:29:53
【问题描述】:
为了了解我在应用程序中使用的设置,我设置了这个简化的示例:
<div ng-controller="Ctrl">
<ul>
<li ng-repeat="oConfigEntry in oConfiguration.oConfigEntriesColl">
<ul>{{oConfigEntry.sDescription}}
<li ng-repeat="oConfigSubEntry in oConfigEntry.oConfigSubEntriesColl">{{oConfigSubEntry.sDescription}}
<input type='checkbox' ng-model='oConfigSubEntry.bNoOption' />{{oConfigSubEntry.bNoOption}}
<ul>
<li ng-repeat='oConfigSubSubEntry in oConfigSubEntry.oConfigSubSubEntriesColl'>{{oConfigSubSubEntry.sDescription}}
<input type='number' placeholder='length' ng-model='oConfigSubSubEntry.dLength' />
<input type='number' placeholder='width' ng-model='oConfigSubSubEntry.dWidth' />
<input type='number' placeholder='height' ng-model='oConfigSubSubEntry.dHeight' />
<input type='checkbox' title='opt1' ng-model='oConfigSubSubEntry.bOpt1' />
<input type='checkbox' title='opt2' ng-model='oConfigSubSubEntry.bOpt2' />
</li>
</ul>
</li>
</ul>
</li>
</ul>
<pre ng-bind="oConfiguration | json"></pre>
</div>
见http://jsfiddle.net/ppellegr/4QABQ/
不幸的是,我在实际应用程序中遇到的问题无法在后面提到的示例中重现。
问题是在实际应用程序中,复选框不可点击。单击复选框不会选中它们。复选框保持未选中状态。
相反,如果相应的模型已初始化,则复选框被选中,但不能通过单击取消选中。
如果将它们放置在嵌套的ng-repeat 中,即使没有分配模型的普通复选框也无法检查。
例如
<input type="checkbox" />
有没有人注意到这种现象?
补充意见:
- 第一次单击复选框会更改模型的值。
- 后续单击不会更改该值。模型的价值仍然是 相同的。
- 第一次单击复选框时,会更改 模型,复选框本身保持选中/未选中取决于 模型的初始值。
【问题讨论】:
-
您是否将复选框包装到
label? -
不,它们像上面的例子一样放置,没有包裹到
label...
标签: javascript jquery angularjs checkbox angularjs-ng-repeat