3

約 100 の質問を含むフォームがあり、それぞれにラジオといくつかのチェックボックスがあるため、ユーザーがフォームを保存して後でロードできるようにする必要があります。このセッションでユーザーが変更したものも確認する必要があります。

この質問は問題を解決します:どの入力フィールドが AngularJS で変更されたかをどのように示すことができますか?

2 番目の答え (モデルの古い値と現在の値を保存し、両方を比較する) がそれを行います。ただし、 $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}}"/>

plnkr はこちら: http://plnkr.co/edit/3xcI0Yq9WPZ1IxJJjKGt?p=preview

4

1 に答える 1

5

必要なのは、それぞれ true 値と false 値として設定1および0見なされることです。とを使用して、その設定を行うことができng-true-valueます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}}" />

プランク

于 2014-10-29T00:25:09.877 に答える