javascript - 如何处理控制台中的 "ng-model value must be a Date object"错误

标签 javascript angularjs datepicker

使用“清除”按钮时 Angular ui-datepicker 将输入设置为空值,这会在开发工具控制台中生成错误

Datepicker directive: "ng-model" value must be a Date object, a number of milliseconds since 01.01.1970 or a string representing an RFC2822 or ISO 8601 date.

关于位置和原因有很多问题,但我想在我自己的代码中处理错误,而不是破解 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;
        }
    }
}

两个日期选择器中的一个看起来像这样,另一个是一样的,除了它有“to”而不是“from”并且编号为“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,但它不起作用。

如何处理上面的控制台错误?

最佳答案

按照 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来自同一个线程可能会帮助你。

关于javascript - 如何处理控制台中的 "ng-model value must be a Date object"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47177270/

相关文章:

jQuery UI 日期选择器在对话框中自动打开

angular - 如何在表单内的 Angular ngx-bootstrap 的日期选择器中更改日期格式

javascript - 如何防止 React 中整个组件的重新渲染?

Javascript 类重写方法

更多 JavaScript 的 JavaScript 预加载器

javascript - 交互式图表(由 dc.js 提供)无法正确相互更新

javascript - 我的下拉列表未动态选择

javascript - 如何让 Angular 2 CLI ng 通过子目录提供服务

javascript - 在 AngularJS 的类方法中无法访问注入(inject)的依赖项

php - 如何使用 MySQLi 准备好的语句获取日期范围的查询结果