14

フィドラーのセットアップがあります。リセットボタンをクリックすると、入力コントロールがクリアされます。これは機能しているようですが、入力がtype='url'

Here is the fiddler

私が理解していない問題や何かがありますか。

私が設定したとき

$scope.myform = {};

これは他の入力タイプをクリアするように見えますが、input type='url' はクリアされていません。

理由を知っている人はいますか?

4

3 に答える 3

19

この問題は、input[type="url"] 内に有効な値がない場合に発生します。無効な値はビュー (入力フィールド)に留まり、ng-model 内のスコープ変数にプッシュされません。変数は、値が正しい場合にのみ更新されます。

有効な値を入力してテストできます。リセットボタンが機能します。無効な値を入力しても無効になりません。

$scope.myform = nullの代わりに設定することで修正できます$scope.myform = {}。これにより、スコープ変数 () が未定義になるため、フィールドが空になります。いずれかのフィールドに有効な値を入力すると、Angular によって自動的に作成されます。

于 2013-09-18T14:11:17.393 に答える
1

のように 2 番目のボックスに有効な URL を入力する必要があるためhttp://www.abc.com、リセット ボタンが機能します。

于 2013-09-18T14:01:12.827 に答える
1

ビュー/モデルを正しく更新するには、次のようにモデルのプロパティを明示的にリセットすることをお勧めします。

$scope.reset = function() {
    $scope.myform = {
        foo: '',
        bar: ''
    };
    $scope.formName.$setPristine();
};

'myform' を空のオブジェクトに設定すると、フィールドが削除されますが、空の文字列には設定されません。angular のクリーンアップがビューが参照している値を削除していない可能性が非常に高いため、アプリケーションのモデルとビューの状態が混乱しています。

それが役に立ったことを願っています。

于 2013-09-18T14:02:38.320 に答える