【发布时间】:2017-06-29 14:54:12
【问题描述】:
我正在使用 AngularJS,最近我开始使用 Typescript 有一段时间了将以下指令转换为打字稿类任何人都知道如何做到这一点,它可以像 AngularCode 一样完美地工作
angular.module('myValidation', [])
.directive('myValidation', function() {
return {
restrict: 'A',
require: "ngModel",
link: function(scope, elm, attrs, ctrl) {
switch (attrs.myValidation) {
case 'email':
var regex = /^[_a-z0-9]+(\.[_a-z0-9]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/;
break;
}
ctrl.$parsers.unshift(function(viewValue) {
if (regex.test(viewValue)) {
ctrl.$setValidity('myValidation', true);
}
else {
ctrl.$setValidity('myValidation', false);
}
return viewValue;
});
ctrl.$formatters.unshift(function(viewValue) {
if (regex.test(viewValue)) {
ctrl.$setValidity('myValidation', true);
}
else {
ctrl.$setValidity('myValidation', false);
}
return viewValue;
});
}
};
});
【问题讨论】:
-
我找不到很好的参考资料来研究如何将我的角度指令转换为类。我发现的只是如何将 AngularJS 服务和控制器转换为类而不是指令。有什么想法吗?
-
像
directive和factory这样的工厂函数不应该转换成打字稿类,IMO。指令具体应该是返回ng.IDirective的函数。检查我对this问题的回答 -
我发现的大多数例子,在你的回答@Gustav 中都做了同样的事情,但是偏离课程的原因是什么?
-
由于
service-function 和controller-function 是用 new 调用的,所以只提供类就很好了。factory-function 和directive-function 不会被 new 调用,所以如果你使用 class.通常如果你想使用一个类和一个服务你应该使用service而不是factory,但是因为directive-function是一个工厂函数,不被new调用,使用它作为一个函数更适合
标签: angularjs typescript