【问题标题】:AngularJS : How to auto-select dateAngularJS:如何自动选择日期
【发布时间】:2015-09-30 21:25:58
【问题描述】:

我有一个输入字段类型日期。 AngularJS 有日期选择器。当用户来编辑已经保存的表单时,AngularJS 会抛出一个错误并且根本没有设置日期,它在 UI 中是空的。非常感谢您的帮助!

HTML

<div class="col-md-10">
        <input type="date" name="purchaseDate"  class="form-control"  ng-model="rma.purchaseDate" placeholder="{{translation.DATEOFPERMIT_PLACEHOLDER}}">
</div>

控制器

//In mySQL DB format is: 2015-07-02
$scope.rma.purchaseDate = $filter("date")(new Date(rma.purchaseDate).toISOString(), 'dd-MM-yyyy');
console.log($scope.rma.purchaseDate);

在 console.log 中

错误:[ngModel:datefmt] 预期 02-07-2015 是一个日期

指定的值“02-07-2015”不符合要求的格式“yyyy-MM-dd”。

在用户界面中

在 UI 中格式为 dd/mm/yyyy

更新

我刚刚关闭了过滤器并尝试了非常简单的方法,这很有效:

 $scope.rma.purchaseDate = new Date(rma.purchaseDate);

谢谢大家!

【问题讨论】:

  • 您使用的是哪个日期选择器?链接?
  • UI 上显示的格式是什么?哪个日期选择器?
  • 据我所知,angular 1.3+ 的 type="date" 的 ngModel 需要 date 是真正的日期对象(angular 1.2 不是),而 HTML5 期望它为 String。所以你需要像 stackoverflow.com/questions/14474555/… 这样的 ngModel $formatters
  • @Sudhansu Choudhary - 就像我在我的问题中所说:在 UI 中,格式是 dd/mm/yyyy。我使用 AngularJS 默认的日期选择器,它只在 chrome 中工作。
  • @YOU - 感谢您的链接。有一条评论,我试过了,这很有效: $scope.rma.purchaseDate = new Date(rma.purchaseDate);

标签: javascript angularjs date filter


【解决方案1】:

你需要提供一个有效的javascript对象给ng-model的日期输入,

这里是DOC

它说,

模型必须始终是 Date 对象,否则 Angular 会抛出错误。无效的 Date 对象(getTime() 为 NaN 的日期)将呈现为空字符串。

为此,您可以创建一个javascript date 喜欢,

//In mySQL DB format is: 2015-07-02
var dateVal = '2015-07-02';
var datePartials = dateVal.split("-");
var dateModel = new Date(datePartials[0], datePartials[1] - 1, datePartials[2]);

$scope.rma.purchaseDate = dateModel;

这是DEMO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-01
    • 2016-01-18
    • 2015-07-23
    • 1970-01-01
    • 2018-02-13
    • 2012-04-29
    • 1970-01-01
    • 2021-02-11
    相关资源
    最近更新 更多