输入控件的AngularJS日期格式错误

时间:2015-01-02 09:58:54

标签: asp.net-mvc angularjs date

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

  

错误:[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>

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

1 个答案:

答案 0 :(得分:0)

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