2

おはよう!

これに触れるスタックに関するいくつかの投稿を見つけましたが、私がやろうとしていることを正確に達成するものは見つかりませんでした。

(参照用の JS Fiddle: http://jsfiddle.net/gsLXf/1/ )

調査の一環として、一連の動的な質問をしています。サーバーにポストバックできる「応答」オブジェクトにテキストおよびラジオ応答の応答をバインドする方法を理解しました。私が抱えている問題は、チェックボックスにあります。フィドルでわかるように、私がやろうとすると

ng-model="response[question.id]"

すべてのチェックボックスが 1 つの項目として応答します (すべて同じ値にバインドされているため、これは理にかなっています。ただし、

ng-model="response[question.id][option.id]"

question.id がまだインスタンス化されていないため、option.id をオブジェクトにプッシュできないため、エラーが発生します。

理想的には、参照されたフィドルに対する私の応答オブジェクトは次のようになります。

{
   "123456": "2", //radio question
   "789012": //checkbox question 
       ["5", "6"] //list of checkbox options ids selected
}

ユーザーは動的にフォームを作成するので、すべての状況でこれを非常に適切に処理できる必要があります。オブジェクト関連のデータをコントローラーにハードコードすることはできません。また、この状況を処理するためにモデル オブジェクトを手動で作成することもできません。

既知の ID セットをループして、初期化中に満たされる応答オブジェクトをスキャフォールディングすることを検討しましたが、Angular がオンザフライで応答オブジェクトを作成するだけの優れた方法を備えている場合 (この状況を除く)、やり過ぎのように思えます。

これを行う最善の方法は何ですか?

4

2 に答える 2

1

既存のAngularディレクティブとhtmlで最善を尽くしますが、チェックボックスをオフにすると、配列に冗長な空の文字列が残ります。

そして、私はng-init

ng-init="response[question.id] = []"

jsfiddle:

http://jsfiddle.net/P9dsR/

于 2014-02-11T15:22:32.897 に答える