1

フォーム検証でを使用している場合ng-model-optiongetterSetter入力に無効なものを入力することはできません。例えば

HTML

<input type="number" ng-model-options="{getterSetter: true}" ng-model="ctrl.myVal" min="10">

JS

this.myVal = function(value) {
  if (value !== undefined) {
    this.actualVal = value;
  } else {
    return this.actualVal;
  }
};

https://plnkr.co/edit/dUPXiD1elGfqZSf9x9Bk?p=preview

その入力では、10未満になるため、数字を入力できません。

なしで得られるのと同じ動作を取得しようとしていgetterSetterます。つまり、ユーザーはビューに無効な入力を入力できますが、モデルは入力が有効な場合にのみ設定されます。

フォーム検証を使用して動作させるための回避策を知っている人はいますか、getterSetterそれともなぜこれが起こっているのか説明できますか?

4

1 に答える 1

3

これはvalue、セッターに渡される可能性があるために発生しundefined、getterSetter をだまして「セッター」呼び出しを「ゲッター」呼び出しとして処理させます。

条件を からvalue !== undefinedに変更するarguments.lengthと問題が解決します: plkr を更新しました

于 2016-07-20T15:27:53.227 に答える