動的フィールド構成に基づいてフォームをレンダリングしたい:
$scope.fields = [
{ title: 'Label 1', type: 'text', value: 'value1'},
{ title: 'Label 2', type: 'textarea', value: 'value2'}
];
これにより、次のように動作するものが出力されます。
<div>
<label>{{field.title}}<br />
<input type="text" ng-model="field.value"/>
</label>
</div>
<div>
<label>{{field.title}}<br />
<textarea ng-model="field.value" rows="5" cols="50"></textarea>
</label>
</div>
簡単な実装は、if
ステートメントを使用して各フィールド タイプのテンプレートをレンダリングすることです。ただし、Angular はステートメントをサポートしていないためif
、ディレクティブの方向に進みます。私の問題は、データバインディングがどのように機能するかを理解することです。ディレクティブのドキュメントは少し複雑で理論的です。
ここでやろうとしていることの基本的な例をモックアップしました: http://jsfiddle.net/gunnarlium/aj8G3/4/
問題は、フォーム フィールドがモデルにバインドされていないため、submit() の $scope.fields が更新されないことです。私のディレクティブ関数の内容はかなり間違っていると思います... :)
今後は、ラジオ ボタン、チェック ボックス、選択など、他のフィールド タイプもサポートする必要があります。