0
假設我們有一個自定義驗證器,其輸入爲屬性的值。自定義驗證器範圍更改的觸發器驗證
app.directive('inputRequired', function() {
return {
require: 'ngModel',
scope: {
inputRequired: '='
},
link: function(scope, elm, attrs, ctrl) {
ctrl.$validators.inputRequired = function(modelValue) {
return !(scope.inputRequired && ctrl.$isEmpty(modelValue));
};
}
};
});
在範圍內,我們定義一個變量和函數來切換變量的值:
$scope.isRequired = false;
$scope.toggle = function() {
$scope.isRequired = !$scope.isRequired;
};
然後我們創建一個表單,我們將使用自定義的驗證。我們也添加一個按鈕來調用切換功能。
<form>
<input type="text" ng-model="someModel" input-required="isRequired"/>
<button ng-click="toggle()">toggle</button>
</form>
這應該如何工作?當窗體被加載並且範圍被初始化時,isRequired
的值被設置爲false
。所以輸入字段不是必需的。當我們點擊切換按鈕時,isRequired
的值更改爲true
。但!雖然驗證器作用域上的變量已更改,但未觸發驗證。
重要提示:這只是一個例子。我知道ng-required
指令,它實現了這個功能。我需要一個通用的解決方案,當一個驗證器有一個輸入和字段的有效性取決於該輸入。如果輸入更改,則該字段必須立即重新生效。