Tôi có một chỉ thị xác nhận tùy chỉnh đang được gọi đúng khi một trường được thay đổi. Tuy nhiên, liệu trường này có hợp lệ hay không cũng dựa trên giá trị của trường khác. Trường thứ hai này là một danh sách lựa chọn nếu đó là tầm quan trọng.Xác thực kích hoạt của một trường khi một trường khác được thay đổi
Tôi đã tự hỏi nếu có một số cách tôi có thể kích hoạt xác nhận theo cách thủ công khi biểu mẫu thứ hai được thay đổi. Có lẽ bằng cách sử dụng sự kiện ng-change
. Cách thích hợp để xử lý một cái gì đó như thế này là gì?
Dưới đây là chỉ thị của tôi:
angular.module('myApp', []).
directive('validage', function() {
return {
require: 'ngModel',
link: function (scope, elem, attr, ngModel) {
function validate(value) {
var valid = true;
if ((GetDateDifference(new Date(value), new Date()) < 16 || GetDateDifference(new Date(value), new Date()) > 129)
&& scope.dep.DependantType == "Spouse") {
valid = false;
}
ngModel.$setValidity('validage', valid);
return value;
}
//For DOM -> model validation
ngModel.$parsers.unshift(function (value) {
var valid = true;
if ((GetDateDifference(new Date(value), new Date()) < 16 || GetDateDifference(new Date(value), new Date()) > 129)
&& scope.dep.DependantType == "Spouse") {
valid = false;
}
ngModel.$setValidity('validage', valid);
return value;
});
//For model -> DOM validation
ngModel.$formatters.unshift(function (value) {
var valid = true;
if ((GetDateDifference(new Date(value), new Date()) < 16 || GetDateDifference(new Date(value), new Date()) > 129)
&& scope.dep.DependantType == "Spouse") {
valid = false;
}
ngModel.$setValidity('validage', valid);
return value;
});
}
};
});
Nếu bạn là người mới đến AngularJS, Tôi chắc chắn sẽ khuyên bạn nên đọc những bài viết 2: part 1 & part 2. Chúng là một tổng quan về các dạng AngularJS.
Vui lòng xem [câu trả lời này] (http://stackoverflow.com/a/16886177/2057033) trên StackOverflow. – Blackhole
với góc 1,3 điều này hoạt động trong chỉ thị: ngModel. $ Validate(); –
Trong anglular 1.2, bạn có thể tự kích hoạt tất cả các hàm trong $ parsers với ngModel. $ SetViewValue(). Vì vậy, chỉ cần đặt nó vào chính nó: ngModel. $ SetViewValue (ngModel. $ ViewValue) – likesalmon