2

AngularJS フォームの検証に関する奇妙な問題に悩まされています。動的に追加されたコントロール (テキスト ボックスなど) が検証を必要とし、フォームから削除された場合、削除されたコントロールが無効であった場合、フォームは無効のままになります。

最後の文は少し紛らわしいです。この plnkr プレビューで動作を確認してください (またはplnkr エディターを参照してください)。

FormController APIを確認しました。ドキュメントに基づくと、AngularJS のソース コードでは FormController の$removeControl()やのようなメソッドが定義されていますが、フォームの検証ステータスの更新を引き起こすメソッドはありません。$setValidity()

検証の問題を回避する標準的な方法はありますか?

4

1 に答える 1

0

詳細については、この回答を参照してください: https://stackoverflow.com/a/15192773/317180

どうやらこれはアクティブなバグです。

回避策は、要素が変更されたときにインクリメントされる非表示のカウンターを提供することです。これにより、フォームが強制的に再検証されます。

テンプレート内:

<input type="hidden" ng-bind="abc" />

コントローラーで:

$scope.remove = function(position) {
    $scope.items.splice(position, 1);
    $scope.abc += 1;
}
于 2013-03-27T22:20:55.680 に答える