如何让自定义验证适用于Kendo Angular
指令DatePicker
?我想实现以下示例,但使用Angular
指令版本DatePicker
:
页面上有多个日期字段时的 KendoUI DatePicker 验证
任何帮助,将不胜感激。
如何让自定义验证适用于Kendo Angular
指令DatePicker
?我想实现以下示例,但使用Angular
指令版本DatePicker
:
页面上有多个日期字段时的 KendoUI DatePicker 验证
任何帮助,将不胜感激。
这就是我使用自己的模板和验证实现基于 KEndo 的 Datepicker 的自定义 Datepicker 的方式:
appModule.directive('nemoDatePicker', function () {
return {
restrict: 'E',
require: '?ngModel',
scope: {
'name': '@',
'text': '@',
'ngModel': '=',
},
templateUrl: '/App/nemo/nemoDatePicker.html',
link: function (scope, element, attrs, ngModel) {
},
controller: function ($scope) {
$scope.error = function (name) {
var s = $scope.editor[name];
return $scope.editor.$invalid && $scope.editor.$dirty ? "has-error" : "";
};
}
};
});
appModule.directive('kendoDateValidator', ['$sce', function ($sce) {
return {
restrict: 'A', // only activate on element attribute
require: '?ngModel', // get a hold of NgModelController
link: function (scope, element, attrs, ngModel) {
if (!ngModel) return; // do nothing if no ng-model
// Specify how UI should be updated
ngModel.$render = function () {
//element.html($sce.getTrustedHtml(ngModel.$viewValue || ''));
};
// Listen for change events to enable binding
element.on('blur keyup change', function () {
scope.$evalAsync(read);
});
read(); // initialize
function read() {
if (!element.val()) return;
const startTime = performance.now();
if (!isDate(element.val()))
{
//console.log(element.val() + " bad");
ngModel.$setValidity('date', false);
}
else
{
//console.log(element.val() + " good");
ngModel.$setValidity('date', true);
}
const duration = performance.now() - startTime;
//console.log("read took " + duration + " ms");
}
function isDate(x) {
var d = kendo.parseDate(x, "dd/MM/yyyy");
return d instanceof Date;
};
}
};
}]);
<div ng-form="editor">
<div class="Box" ng-class="error(name)">
<div class="SubTitle">
<div class="DirectiveIcon1">
<span class="glyphicon glyphicon-calendar"></span>
</div>
{{text}}
</div>
<input kendo-date-picker
culture="he-IL"
k-format="'dd/MM/yyyy'"
id="{{name}}"
name="{{name}}"
ng-model="ngModel"
required
kendo-Date-Validator
class="form-control"/>
<div>
<div>
<span class="help-block" ng-show="editor.$error.required && editor.$dirty">שדה חובה</span>
<span class="help-block" ng-show="editor.$error.date">יש להזין תאריך</span>
</div>
</div>
</div>
</div>