AngularJS:$ pristine用于ng-check检查输入

时间:2014-10-29 00:07:15

标签: angularjs angularjs-ng-model

我有一个包含大约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

1 个答案:

答案 0 :(得分:5)

您需要将10分别视为真值和假值。您可以使用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