サーバーからメタデータを取得し、フォームを動的に構築する動的フォーム ディレクティブを構築しました。レンダリングされた入力はModel
、メタデータとは別のオブジェクトにバインドされます。それを達成するために、私たちは次のようなことをしています:
<input type="field.Type"
ng-model="Model[field.Name]"
ng-repeat="field in metadata.Fields" />
上記のマークアップが機能し (単純なシナリオでは機能します)、バインディングが期待どおりに機能すると仮定します。残念ながら、使用しているモデルがスカラー プロパティのコレクションではない場合、すべてがうまくいきません。例は次のとおりです。
- メジャー.ID
- ディメンション[0].SelectedAttribute
ご覧のとおり、ネストされたプロパティがある場合、および/またはバインドする必要があるリストがある場合に問題が発生しますModel[propertyName]
。動的バインディングを実現するために表記法を使用しているため、これは明らかに正常な動作です。
サーバーからの式を自分で解析し、モデルの階層 (ネストされたプロパティ) をたどり、バインディングを理解することを考えましたが、(まだ) 正しく理解できませんでした。さらに、リスト/配列バインディングの問題を解決する時間についてはまだ何も考えていません。
何かご意見は?