2016-11-10 113 views
3

我想獲得用戶的出生日期,預定義的最小和最大日期工作正常。 我想要的日期格式是DD-MM-YYYY,爲此我在config中定義了以下內容;角材料日期選擇器字段值爲空

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

和控制器具有

$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」

我想無論是 「2016年9月11日」 或 「2016年9月11日18:30:00」

+0

如果我刪除配置塊中寫入的代碼,那麼字段值不會顯示任何日期,但這會阻止我設置特定的日期格式。 –

回答

4

你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; 

,並得到一個空的日期選擇器。

1

的問題是你的NG -模型。你的當前日期初始化它:

$scope.user.dob = new Date(); 

乾脆爲空這個變量,你會好),表示空值

+0

我試過$ scope.user.dob =「」;和$ scope.user.dob = null;但都導致「無效日期」和$ scope.user.dob = undefined;顯示當前日期 –