Chỉ thị xác thực tùy chỉnh này là một ví dụ được trình bày tại trang web góc chính thức. http://docs.angularjs.org/guide/forms Kiểm tra văn bản có ở định dạng số hay không.Để kiểm tra hướng dẫn xác thực angularjs tùy chỉnh
var INTEGER_REGEXP = /^\-?\d*$/;
app.directive('integer', function() {
return {
require: 'ngModel',
link: function(scope, elm, attrs, ctrl) {
ctrl.$parsers.unshift(function(viewValue) {
if (INTEGER_REGEXP.test(viewValue)) {
// it is valid
ctrl.$setValidity('integer', true);
return viewValue;
} else {
// it is invalid, return undefined (no model update)
ctrl.$setValidity('integer', false);
return undefined;
}
});
}
};
});
Để đơn vị kiểm tra mã này, tôi đã viết này:
describe('directives', function() {
beforeEach(module('exampleDirective'));
describe('integer', function() {
it('should validate an integer', function() {
inject(function($compile, $rootScope) {
var element = angular.element(
'<form name="form">' +
'<input ng-model="someNum" name="someNum" integer>' +
'</form>'
);
$compile(element)($rootScope);
$rootScope.$digest();
element.find('input').val(5);
expect($rootScope.someNum).toEqual(5);
});
});
});
});
Sau đó, tôi nhận được lỗi này:
Expected undefined to equal 5.
Error: Expected undefined to equal 5.
tôi đặt câu in ở khắp mọi nơi để xem những gì đang xảy ra, và có vẻ như chỉ thị không bao giờ được gọi. Cách thích hợp để kiểm tra một chỉ thị đơn giản như thế này là gì?
Cảm ơn bạn đã dành thời gian trả lời câu trả lời! Chỉ cần FYI, bạn có thể trích xuất câu trả lời của bạn và đánh dấu nó như là một chấp nhận cho người tìm kiếm sau này - đó là chấp nhận được xung quanh đây ;-) –
Cảm ơn lời khuyên của bạn. Tôi đã chuyển câu trả lời của mình. – ghiden