输入类型日期ng-model不允许日期数据

时间:2016-09-18 09:46:50

标签: javascript angularjs

从服务器响应中,我想将日期映射到我的范围变量,其类型为' date'在角度,因为我做同样的,我无法映射它,因为我得到以下错误

angular.js:12798 Error: [ngModel:datefmt] Expected `2016-09-22T18:30:00.000Z` to be a date
http://errors.angularjs.org/1.4.12/ngModel/datefmt?p0=2016-09-22T18%3A30%3A00.0

注意:我已经在ng-repeat循环中将$ operatingDetails.date作为例外数组进行映射

任何帮助,请不胜感激......

HTML

 <div ng-repeat="operatingDetails in operatingDetails.exceptions" style="margin-top: 8px;">
             <div class="DateField">
             <input id="date2" type="date" ng-model="operatingDetails.date" style="" ng-change="customOPHchangeExpDateValid(operatingDetails.date, $parent.$parent.$index)"/>
             </div>
</div>

JS(角)

$scope.opertingHours.date

服务器响应

{
                "name" : "Custom Operation Hours1",
                "exceptions" : [{
                        "date" : "2016-09-15T18:30:00.000Z",
                        "starttime" : "10:02AM",
                        "endtime" : "10:02PM",
                        "_id" : "57de44c54feb409c2e13ff40",
                        "$$hashKey" : "object:207"
                    }
                ],
                "businesshour" : {
                    "sat" : {
                        "starttime" : "8:00AM",
                        "endtime" : "5:00PM"
                    },
                    "fri" : {

2 个答案:

答案 0 :(得分:2)

我猜你得到这个错误,因为“date”(“date”:“2016-09-15T18:30:00.000Z”,)是一个字符串。所以将它从字符串转换为日期。

所以试试这个,

$scope.opertingHours.date = new Date(exceptions[0].date); //Converting string to date

希望,它会为你工作。

答案 1 :(得分:0)

你的 operatingDetails $ scope ng-repeat 中使用它时会感到困惑,所以请尝试使用另一个,如下所示

<div ng-repeat="oD in operatingDetails.exceptions" style="margin-top: 8px;">
                 <div class="DateField">
                 <input id="date2" type="date" ng-model="convertDate(oD.date)" style="" ng-change="customOPHchangeExpDateValid(oD.date, $parent.$parent.$index)"/>
                 </div>
</div>

还要将以下功能添加到控制器

$scope.convertDate=function(inputDate){
return new Date(inputDate);
}