Angular ui-datepicker使用' Clear'按钮将输入设置为空值,这将在dev-tools控制台中生成错误
Datepicker指令:" ng-model" value必须是Date对象,自01.01.1970以来的毫秒数或表示RFC2822或ISO 8601日期的字符串。
有关于wheres和whys的问题,但我想在我自己的代码中处理错误,而不是破坏datepicker插件本身。当我处理验证时,它不会导致我的表单行为错误。我正在使用此代码:
function logicalDates(from, to) {
if (vm.to === null || vm.to === undefined || vm.to === NaN) {
vm.logicalDatesBool = true;
} else {
if (new Date(vm.from) > new Date(vm.to)) {
vm.logicalDatesBool = false;
} else {
vm.logicalDatesBool = true;
}
}
}
两个日期选择器中的一个看起来像这样,另一个是相同的,除了它有"到"而不是"来自"编号为" ng-click =" open2 ..."
<input class="form-control"
type="text"
ng-click="open1($event,'opened1')"
is-open="opened1"
max-date="maxDate"
placeholder="{{'dd/mm/yyyy' | translate}}"
datepicker-options="dateOptions"
ng-required="false"
datepicker-popup="{{format}}"
ng-model="vm.from"
current-text="{{'Today'| translate}}"
toggle-weeks-text="{{'Weeks'| translate}}"
clear-text="{{'Clear'| translate}}"
close-text="{{'Close'| translate}}"
ng-change="vm.logicalDates(vm.from, vm.to)" />
<span class="input-group-btn">
<button class="btn btn-standard" ng-click="open1($event)">
<i class="glyphicon glyphicon-calendar"></i>
</button>
</span>
<div class="value form-group pull-left" ng-if="!vm.logicalDatesBool"
style="margin-left: 2rem;" >
<div class="note note-error" translate>'From' date should preceed 'to'
date</div>
</div>
我认为这是一个关于错误处理的问题,但我不确定!我尝试在输入元素上使用$ datepickerSuppressError,但它不起作用。
如何处理上述控制台错误?
答案 0 :(得分:1)
根据following thread(即this comment)的建议,通过修改datepicker.js第652行来实现现有的解决方法:
ngModel.$viewChangeListeners.push(function () {
if (ngModel.$viewValue)
scope.date = dateParser.parse(ngModel.$viewValue, dateFormat, scope.date) ||
new Date(ngModel.$viewValue);
else
scope.date = null;
});
在之前的经历中,它确实有用,虽然它已经很久以前了,而且我对你正在使用的版本也不是100%肯定,而我当时也用过。
修改强>
在讨论如果无法访问来自同一个线程的datepicker.js another comment可能会帮助你。