格式化ng-model的初始值(使用datePicker输入类型文本)

时间:2016-09-15 10:01:06

标签: angularjs date datepicker angular-ngmodel

我有一个带有datePicker的输入类型文本。

<input id="start-date" style="width: 230px;" close-text="Close"
 type="text" ng-model="startDate"  datepicker-popup="dd-MM-yyyy"  
ng-required="true"/></div>

当显示输入时,我必须显示它的初始值。问题是该值以这种格式显示:

Wed Jun 15 2016 10:48:49 GMT+0000 (WET)

在从datePicker中选择一个日期后,我可以看到我想要的格式(dd-MM-yyyy)。为了解决这个问题,我补充道:

$scope.$watch('startDate', function (newValue) {
  $scope.startDate = $filter('date')(newValue, 'dd-MM-yyyy');
});

但是我收到了这个错误:Datepicker指令:&#34; ng-model&#34; value必须是Date对象,自01.01.1970以来的毫秒数或表示RFC2822或ISO 8601日期的字符串。

我该如何解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:0)

假设您正在使用AngularUI日期选择器并且ng-Model的初始值没有被格式化,只需将以下指令添加到您的项目中就可以解决问题:

directive('datepickerPopup', function (){
  return {
    restrict: 'EAC',
    require: 'ngModel',
    link: function(scope, element, attr, controller) {
      //remove the default formatter from the input directive to prevent conflict
      controller.$formatters.shift();
    }
  }
})