検索

ホームページ  >  に質問  >  本文

angular.js - AngularJS におけるフォームの入力制御のバインディングの問題

フォームに名前を指定すると、フォームがスコープに追加され、同時にフォームの名前を使用してフォームオブジェクトを取得できることを公式ドキュメントから学びました。オブジェクトは、コントロールの名前に基づいてフォーム オブジェクトから取得することもできます。
例:

リーリー

コントローラー内

リーリー

私たちが現在直面している問題は次のとおりです:
ng-repeat によって生成された一連のコントロールがあります。別のコントロールを指定するために「name = xx{{$index}}」を試しました。

リーリー

ng-repeat によって生成されたコントロール名は、HTML ページでは xxx0、xxx1 などとして表示されますが、フォーム オブジェクトのプロパティを見ると、そのような属性は存在しないことがわかります。 xxx0、xxx1 などですが、xxx{{$index}} 属性のみであり、この属性は ng-repeat によって生成された最後の入力コントロールを表します。写真のように、

html ページ:


図に示すように、ng-repeat は 2 つの入力コントロール

を生成しました。

しかし、コントローラーでデバッグすると、フォームに manager0 属性と manager1 属性はなく、manager{{$index}} だけがあることがわかりました。これは、manager1
< を意味します。 🎜>

推論では、フォームがスコープ動作に追加された後に ng-repeat 展開が発生します。では、フォームを通じてすべてのコントロール オブジェクトを取得するにはどうすればよいでしょうか? $scope.adminForm がオブジェクトではなくコンストラクターを表示するのはなぜですか?

追伸: 私は yeoman によって自動生成されたフレームワークを使用しています

PPS: フォームに instantiate.c が表示されていることもわかりましたが、上記の問題は依然として発生します
JSFiddle リンク:
https://jsfiddle.net/xwadh6kt/1/

曾经蜡笔没有小新曾经蜡笔没有小新2795日前584

全員に返信(2)返信します

  • 阿神

    阿神2017-05-15 16:55:30

    <入力名="xxx{{$index}}"><input name="xxx{{$index}}">

    注意,表单元素的 name 只能是字符串,无法构造数组或对象等数据类型,但是字符串里可以用双大括弧解析变量。

    刚好回答的时候我正在做一个类似的东西,动态生成的表单组使用 ngRepeat

    フォーム要素の名前は文字列のみであり、配列やオブジェクトなどのデータ型は構築できないことに注意してください。ただし、文字列内の変数は二重中括弧を使用して解析できます。

    私が回答していたときも同様の作業をしていました。動的に生成されたフォーム グループは、ngRepeat を使用して走査されました。実際の効果を見てみましょう。

    これは対応するソースコードです:

    🎜このメソッドを使用して、ID と名前の両方の一意の値を取得しました。 🎜

    返事
    0
  • 世界只因有你

    世界只因有你2017-05-15 16:55:30

    理由はangularjsのバージョンの問題で、バージョン1.4を使用していましたが、上記の問題は発生しませんでした。 詳細については、http://stackoverflow.com/questions/24020503/angular-ng-repeat-with-ng-...
    を参照してください。

    返事
    0
  • キャンセル返事