我有一个包含大约100个问题的表单,每个表单都有一个收音机和一些复选框,因此我需要用户能够保存表单并在以后加载它。我还需要检查用户在此会话中更改了哪些内容。
此问题解决了问题:How can I denote which input fields have changed in AngularJS
第二个答案(存储模型的旧值和当前值并比较两者)就可以了。但是,如果我想使用$ pristine解决方案,我有一个问题。取消选中ng-checked框不会改变它的$ pristine值。只有在取消选中后再次选中该复选框,$ pristine值才会变为false。
我知道我不习惯使用带有ng-check的ng-model,但我从服务器获得的值为1或0的值。用作模型的值不会选中复选框。
ng-model="question.answer" //will not check the box
ng-check="question.answer" //does check the box
服务器的值为1。取消选中并选中此复选框会将其更改为“true”
<input ng-model="question.answer" ng-checked="question.answer"
type="checkbox" name="{{'answer' + question.id}}"/>
Heres a plnkr:http://plnkr.co/edit/3xcI0Yq9WPZ1IxJJjKGt?p=preview
答案 0 :(得分:5)
您需要将1
和0
分别视为真值和假值。您可以使用ng-true-value
and ng-false-value
进行设置。你不必处理将1/0转换为true / false,也可以摆脱ng-checked
并有效地使用ng-model
。
<input ng-model="question.answer"
ng-true-value="1"
ng-false-value="0" type="checkbox" name="{{'answer' + question.id}}" />
<强> Plnkr 强>