我玩過自定義指令,並烹飪了適合我的情況的東西。
在我輸入threshold
我有less-than-or-equal="quota.size"
指令,傳遞模型的屬性,以驗證對(我想quota.threshold
小於或等於quota.size
):
<input type="number" name="threshold"
ng-model="quota.threshold"
required
less-than-or-equal="quota.size" />
在link
lessThanOrEqual
指令的功能,它開始看quota.size
當它只是試圖quota.size
更改設置的threshold
當前視圖值型號:
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
我推解析器解析收藏,相反unshifting它最喜歡的例子建議,因爲我要的角度來驗證required
和number
指令,所以我來到這裏只是如果我有一個有效的和解析數(對我來說工作少,但對於text
投入也許我應該做的解析工作)
這裏我的遊樂場:http://embed.plnkr.co/EysaRdu2vuuyXAXJcJmE/preview
正在這裏討論這個問題:https://github.com/angular-ui/ui-utils/issues/25 – ProLoser
爲了避免這種情況的發生,需要在表單輸入元素中添加ng-model-options =「{allowInvalid:true}」來避免這種情況的發生 - 問題在於,當$ q服務拒絕響應時型號默認情況下不會更新。瘋了吧!花一天時間來解決這個問題。 – danday74