的名字我已經創建自定義的驗證,並將其粘貼到輸入元素的模型,如:限制校驗器的角
ngModel.$validators.required = function (value) {
return !!value;
}
而且這是行不通的 - 功能甚至沒有叫。但是將其從required
重命名爲alsoRequired
- 它被正確調用。
Angular對驗證器的命名有一些限制嗎?
的名字我已經創建自定義的驗證,並將其粘貼到輸入元素的模型,如:限制校驗器的角
ngModel.$validators.required = function (value) {
return !!value;
}
而且這是行不通的 - 功能甚至沒有叫。但是將其從required
重命名爲alsoRequired
- 它被正確調用。
Angular對驗證器的命名有一些限制嗎?
沒有足夠的代碼來了解到底是怎麼回事,但我能猜出你的錯誤是:
ngModel.$validators
由判定任何指令集設置它。例如,輸入指令type="email"
設置爲$validators.email
; ng-required
指令集$validators.required
,等等。
您可能在自定義指令或<input type="text">
上設置了ng-model
,該自定義指令本身不會註冊驗證程序。
自定義指令,像你這樣的,可以註冊一個驗證:
link: function(scope, element, attrs, ngModel){
ngModel.$validators.required = function (value) {
console.log(value); // this will fire if parsers do not return undefined
return !!value;
};
})
如果設置結合ng-model
,應該很好地工作:
<input type="email" ng-model="foo" my-dir>
http://plnkr.co/edit/1oQGRWZ0kWlV6Q7WjvrY?p=preview
要回答你的問題,您的$validators.required
函數未被調用的可能原因是因爲您有另一個指令覆蓋es此值 - 例如,ng-required
。
您可以動態設置必填字段,以便您可以使用ng-required="expression"
而不是使用驗證程序。這將增加required
屬性有條件如果expression
將true
謝謝,但事實並非如此。我只是問,爲什麼它沒有設置我的驗證器或覆蓋Angular的一個。 – hsz 2015-03-31 07:25:09
required是angularjs中的默認驗證器。 – sms 2015-03-31 07:17:39
您可以直接使用'ng-required =「表達式」'動態設置所需的屬性' – 2015-03-31 07:19:39
@sms所以我不能覆蓋它?甚至在不使用本地語言的情況下設置另一個具有相同名稱的語言? – hsz 2015-03-31 07:25:56