3

JSON オブジェクトから動的フォーム入力を作成する Angular.js アプリを作成しようとしています。

まず、JSON オブジェクト (フィールドと呼ばれる) があります。

[
  {"field_id":209,"form_id":1,"name":"firstname","label":"First Name","type":"text"},
  {"field_id":210,"form_id":1,"name":"lastname","label":"Last Name","type":"text"},
  {"field_id":211,"form_id":1,"name":"email","label":"Email","type":"text"},
  {"field_id":212,"form_id":1,"name":"picture","label":"Picture","type":"file"},
  {"field_id":213,"form_id":1,"name":"address","label":"Address","type":"file"},
  {"field_id":214,"form_id":1,"name":"password","label":"Password","type":"password"},
  {"field_id":215,"form_id":1,"name":"","label":"","type":"submit"}
]

オブジェクトキーtypeは、フォームの入力タイプです。下記参照:

<p ng-repeat="field in fields">
  {{field.name}} : <input type="{{field.type}}" value="{{record.data[field.name]}}" />
</p>

submitこれで、 、textpasswordcheckboxおよびradioフィールドに対して完全に正常に機能します。ただし、タイプが の場合file、入力タイプを に設定しますtext

テキストを forに置き換える{{field.name}}と、 が出力されていることが確認できます。{{field.type}}file

静的に変更<input type="{{field.type}}"... する<input type="file"...と、ファイル入力が正しく表示されます。

入力タイプをファイルとして動的に設定できないのはなぜですか?

4

1 に答える 1

2

要素がホットトピックである場合にtypeプロパティを変更する場合のトピック。<input>

実際、AngularJSの動作はjQueryが追加されたかどうかに依存するため(angular.jsの前または後に)。

ここでは、変更の可能性に関するいくつかの議論を読むことができます:jQueryで入力フィールドのタイプを変更typeます

また、動的タイプ変更をサポートする新しいディレクティブを追加するためのAngularUIへのプルリクエストがあります:https ://github.com/angular-ui/angular-ui/pull/371

提案された解決策が十分ではないことがわかった場合(フォームをレンダリングした後にタイプは変更されないため)、ng-switch方法をとることができます-ユーザーに正しい入力を表示するだけです。

于 2013-02-19T10:13:14.827 に答える