私はカスタム ディレクティブで遊んで、自分の場合に役立つものを調理しました。
thresholdI haveディレクティブの入力で、検証するモデルのプロパティを渡します (次の値以下less-than-or-equal="quota.size"になりたい):quota.thresholdquota.size
<input type="number" name="threshold"
ng-model="quota.threshold"
required
less-than-or-equal="quota.size" />
ディレクティブlinkの機能では、監視を開始し、変更時にモデルの現在のビュー値を設定しようとします:lessThanOrEqualquota.sizequota.sizethreshold
link: (scope, elem, attr, ctrl) ->
scope.$watch attr.lessThanOrEqual, (newValue) ->
ctrl.$setViewValue(ctrl.$viewValue)
scope.thresholdValidate(thresholdValue)次に、候補値を渡すメソッドを呼び出して検証を行うパーサーがあります。このメソッドはtrue、検証が成功した場合に戻り、成功した場合は新しい値を返し、それ以外の場合は現在のモデルの値を返します。
ctrl.$parsers.push (viewValue) ->
newValue = ctrl.$modelValue
if not scope.thresholdValidate viewValue
ctrl.$setValidity('lessThanOrEqual', false)
else
ctrl.$setValidity('lessThanOrEqual', true)
newValue = viewValue
newValue
ほとんどの例が示唆するようにシフトを解除するのとは反対に、パーサーをパーサーコレクションにプッシュしています。これは、角度を検証requiredしてnumberディレクティブを使用する必要があるためです。有効で解析された数値がある場合にのみここに到達します (私にとっては少ない作業ですが、入力についてtextは、おそらく解析ジョブを実行する必要があります)
ここに私の遊び場があります: http://embed.plnkr.co/EysaRdu2vuuyXAXJcJmE/preview