angularjs - Angular Material 日期选择器字段值为空

标签 angularjs datepicker material-design

我想获取用户的出生日期,并预定义最小和最大日期,效果很好。 我想要的日期格式是 DD-MM-YYYY,为此我在配置中定义了以下内容;

app.config(['$mdDateLocaleProvider', function ($mdDateLocaleProvider) {
      $mdDateLocaleProvider.formatDate = function(date) {
         return moment(date).format('DD-MM-YYYY');
      }}]);

并且 Controller 有

    $scope.user = {};
    $scope.user.dob = new Date();
    $scope.maxDate = new Date(
       $scope.user.dob.getFullYear() - 10,
       $scope.user.dob.getMonth(),
       $scope.user.dob.getDate()
    );
    $scope.minDate = new Date(
       $scope.user.dob.getFullYear() - 120,
       $scope.user.dob.getMonth(),
       $scope.user.dob.getDate()
    );

HTML 是;

<md-datepicker 
 ng-model="user.dob" 
 md-placeholder="Enter date of birth"
 md-min-date="minDate" 
 md-max-date="maxDate">
</md-datepicker>

使用此代码,该字段默认显示当前日期,这是我不想要的,

我希望日期字段默认为空。

另外我想以两种方式获取值,如下所示 1) 日期-月份-年份 和 2) 日月年时分秒

当我尝试获取该值时,它显示“09-11-2016T18:30:00.000Z”

我想要“09-11-2016”或“09-11-2016 18:30:00”

最佳答案

您的 mdDateLocaleProvider 不会检查空值。

您的问题是:

app.config(['$mdDateLocaleProvider', function ($mdDateLocaleProvider) {
  $mdDateLocaleProvider.formatDate = function(date) {
     return moment(date).format('DD-MM-YYYY');
  }}]);

它需要类似于:

$mdDateLocaleProvider.formatDate = function(date) {
   var m = moment(date);
   return m.isValid()? m.format('DD-MM-YYYY') : '';
};

然后就可以设置了

$scope.user.dob=null;

并获得一个空的日期选择器。

关于angularjs - Angular Material 日期选择器字段值为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40531104/

相关文章:

javascript - 带有 FontAwesome 按钮的 jQuery Datepicker?

java - Android Ripple 效果在 fragment 内滞后

angularjs - Angular-js 代码缩小错误 : Unexpected token: operator (>)

javascript - 如何在 ng-repeat 中设置表单输入值?

jquery - 如何获取 "Now"按钮 jQuery datetimepicker 来关闭小部件,就像 "Done"按钮一样

android - DatePickerDialog 如果打开会显示不正确的日期,然后其他地方的日期会更改

javascript - Angularjs、嵌套 JSON 和 ng-repeat

javascript - ng-class 表达式不会动态改变

android - Unity 中的 UI 切换

css - 文本居中与谷歌图标对齐