我使用ng-repeat生成复选框,并且可以选中或取消选中它们的初始状态,具体取决于该信息是否存在于数据中。我的问题是,即使它没有正确显示它们的初始检查/未检查状态,当我取消选中已经“预先检查”的框时,该框实际上取消选中,但模型不会改变。然后再检查一次,模型不会改变,但它是正确的。然后,我再次取消选中,并在模型中正确清除并从此开始正常工作。我一直在解决这个问题好几天,我完全陷入了困境!任何人都可以看到我是否在做一些愚蠢的事情?我的感觉是,这是一个初始化问题,但我现在距离它太近。谢谢!ng-checked不是第一次更新
<!-- if this is a checkbox to be drawn -->
<div ng-if="option.option_type=='checkbox'">
<label class="item-checkbox-right">
{{option.caption}}
<!-- handle multiple options -->
<!-- if answered_options[n]weight exists, make option.ans = weight --></label>
<ul ng-repeat="opti in questionpart.survey_answer[0].answered_options">
<li style="list-style: none; display: inline">
<!-- if option is set in the received data, set it in the model -->
<div ng-if="opti.id == option.id">
<div ng-init="option.ans = option.weight"></div>
</div>
</li>
</ul>
<label class="item-checkbox-right">
<!-- show the checkbox and bind to option.ans-->
<input class="checkbox-light"
type="checkbox"
name="{{questionpart.id}}"
ng-false-value="0"
ng-true-value="{{option.weight}}"
ng-model="option.ans"
ng-checked="option.ans==option.weight" />
</label>
</div>
初始值或者计算为ng-false-value或ng-true-value,那么当你按下复选框时,角度将值转换为false和true。您可以通过打印{{option.ans}}进行检查。我遇到了类似的问题,我的解决方案是在函数中添加解析并在复选框中单击ng来调用它。希望有更简单的解决方案,但至少现在你知道可能是问题的原因。 –
谢谢你 - 我试着输出option.ans模型,但它显示正确的值,除非当第一次未选中该框时,它不会改变。我将尝试通过函数进行解析并单击ng。任何其他想法的人? :-) –
嘎,我不能做我想做的事情,因为检查角度复选框状态的方法是通过模型。这太令人沮丧了! –