3

我有一个包含大约 100 个问题的表单,每个问题都有一个收音机和一些复选框,所以我需要用户能够保存表单并稍后加载它。我还需要检查用户在此会话中更改了哪些内容。

这个问题解决了问题:How can I denote which input fields have changed in AngularJS

第二个答案(存储模型的旧值和当前值并比较两者)就是这样做的。但是,如果我想使用 $pristine 解决方案,我就有问题了。取消选中一个 ng-checked 框不会改变它的 $pristine 值。只有在取消选中后再次选中该框,$pristine 值才会变为 false。

我知道我不应该将 ng-model 与 ng-check 一起使用,但我从服务器获得值 1 或 0 的答案。用作模型的此值不选中复选框。

ng-model="question.answer"  //will not check the box
ng-check="question.answer"  //does check the box

值来自服务器的 1。取消选中并选中该框将其更改为“真”

<input ng-model="question.answer" ng-checked="question.answer" 
type="checkbox" name="{{'answer' + question.id}}"/>

这是一个plnkr:http ://plnkr.co/edit/3xcI0Yq9WPZ1IxJJjKGt?p=preview

4

1 回答 1

5

您需要设置10分别被视为真值和假值。您可以使用ng-true-valueng-false-value进行设置。您不必处理将 1/0 转换为真/假的问题,也可以有效地摆脱ng-checked和使用ng-model自身。

<input ng-model="question.answer" 
            ng-true-value="1" 
            ng-false-value="0" type="checkbox" name="{{'answer' + question.id}}" />

PLNKR

于 2014-10-29T00:25:09.877 回答