ng値が「回答」オブジェクトに設定されているページにラジオボタンがあります。その変数のモデルは、系列配列の特定の要素に設定されています。データの構造は次のようになります。角1.5ラジオボタンモデル
var user = { affiliations: [ {question: ..., answers: ... }, ... ] }
このように、各「所属」には質問と1つ以上の回答があります。私はそうのようなAngularJSで、このためのUIを作成しようとしている:私のモデルに
<form name='affiliationsForm'>
<div ng-repeat="(i, affiliation) in DS_OrgAffiliations">
<h6>{{affiliation.question.name}}</h6>
<div ng-if="affiliation.question.questionType=='MultipleAnswer'">
...
</div>
<div ng-if="affiliation.question.questionType=='SingleAnswer'">
<label ng-repeat="answer in affiliation.answers">
<div>
<input type="radio" ng-model="$parent.DS_User.affiliations[i].answers" name="{{affiliation.question.name}}" ng-value="answer"> {{answer.answer}} </input>
</div>
</label>
</div>
</div>
<button data-ng-click="submitAffiliations()">save</button>
、これは実際には非常に適しています。私は多肢選択式の質問と単一の質問の違いを処理する小さなグルーコードを持っています。このフォームに変更を加えると、モデルは問題なく変更を反映します。
問題はフォームがページ上で初期化されるとき、正しいラジオボタンはチェックされません。モデルは答えオブジェクトを 'answers'プロパティ内に表示しますが、フォームはその値を反映しません。さらに、ラジオボタンを選択するとモデルに正解が割り当てられ、アクティブなラジオボタンを選択すると、モデルは変更されないように見えます。
私は、モデルが浅いコピーではなく、正しい「回答」オブジェクトのディープコピーで初期化されていると思います。この参照が異なるという事実は、同じ内容のオブジェクトです。
これは間違いありませんか?この理論をテストするために、私はこれを行いました:
<input type="radio" ng-model="$parent.DS_User.affiliations[i].answers" name="{{affiliation.question.name}}" ng-value="answer" ng-checked="$parent.DS_User.affiliations[i].answer.answer==answer.answer"> {{answer.answer}} </input>
ng-checked属性は類似性を保証するために回答のメンバーをチェックしています。残念ながら、これはページの読み込み時に正しいラジオボタンをデフォルトに設定することもできません。
これについての洞察はありますか?私はこれで約1時間半を費やしていましたが、私の参照の説明はおそらくそうでしたが、ng-checked属性が失敗したためにスレッドを見つけることができませんでした。