【问题标题】:AngularJS Date Format error with input control输入控件的AngularJS日期格式错误
【发布时间】:2015-01-02 09:58:53
【问题描述】:

我有一个视图,其中列出了可以通过单击行末尾的“编辑”来编辑的一组记录。记录在“显示”模式下正确显示,但在转换为编辑模式时,不会填充日期字段。在呈现页面时,我在控制台中为每条记录收到以下错误。

错误:[ngModel:datefmt] 预期 2014-12-28T00:00:00 是一个日期

我尝试创建一个指令来转换日期,但这似乎不起作用。

指令:

    app.directive('jsonDate', function ($filter) {
    return {
        restrict: 'A',
        require: 'ngModel',
        link: function (scope, element, attrs, ngModel) {

            //format text going to user (model to view)
            ngModel.$formatters.push(function (value) {
                var date = $filter('date')(value, ['yyyy-MM-dd']);
                return date;
            });

            //format text from the user (view to model)
            ngModel.$parsers.push(function (value) {
                var date = new Date(value, 'dd/MM/yyyy');
                return date;
            });
        }
    };
})

观点:

<td>
   <p data-ng-hide="competition.editMode">{{ competition.competitionDate | date: 'dd/MM/yyyy' }}</p>
   <input data-ng-show="competition.editMode" type="date" data-ng-model="competition.competitionDate" json-date />
</td>

如果我将起息日输出到控制台,它会将其报告为无效日期。我该如何解决这个问题?

【问题讨论】:

  • 你用的是火狐浏览器吗?
  • 查看日期:dd/MM/yyyy 您正在传递此格式,但 html-5 日期预期格式为 2014-12-28 所以尝试 yyyy-MM-dd
  • 这是在 Chrome 中,我已将所有日期格式更改为 yyyy-MM-dd 并且仍然保持不变。似乎只调用了 ngModel.$formatters 而不是第二部分 ngModel.$parsers?
  • 你能提供示例 jsfiddle 或 plunker 吗?

标签: asp.net-mvc angularjs date


【解决方案1】:

这意味着 ngModel 需要一个 javascript Date 对象。在您的行加载代码中,将对象的日期(字符串)成员转换为 Date 对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 2015-06-28
    相关资源
    最近更新 更多