2015-09-09 36 views
4

我試圖用角料日期選擇器,並正在以下錯誤:角材質的DatePicker date.toLocaleDateString不是一個函數

TypeError: date.toLocaleDateString is not a function 
at Object.defaultFormatDate [as formatDate] (angular-material.js:6860) 
at DatePickerCtrl.configureNgModel.ngModelCtrl.$render (angular-material.js:7184) 
at Object.<anonymous> (angular.js:25233) 
at m.a.$get.m.$digest (angular.js:15707) 
at m.a.$get.m.$apply (angular.js:15986) 
at g (angular.js:10511) 
at L (angular.js:10683) 
at XMLHttpRequest.A.onload (angular.js:10624) 

我haave取自這裏的代碼筆的例子: https://material.angularjs.org/latest/#/demo/material.components.input

相關的HTML代碼:

  <div layout="" layout-sm="column"> 
      <md-input-container style="width:70%"> 
       <label>Company (Disabled)</label> 
       <input ng-model="user.company" disabled=""> 
      </md-input-container> 

      <md-datepicker ng-model="date" md-placeholder="Enter date"></md-datepicker> 
     </div> 

我的控制器

$scope.date={}; 
$scope.$watch('date', function() { 
    console.log($scope.date); 
}); 

回答

4

toLocaleDateString是一個日期對象的本地方法,因此看起來您的md-datepicker沒有綁定到日期。如果沒有HTML和填充數據的代碼,很難說清楚,但這是最可能的原因。

+1

你是對的。我沒有將日期選擇器的ng模型設置爲我的控制器中的有效javascript日期和範圍。謝謝!!!我會編輯我的問題,以使其他人更有意義。 –

-1

我有面對這樣的錯誤,因爲我試圖格式字符串值分配到與MD-日期選擇綁定一個模型,它持有的javascript日期類型 這樣

$scope.eventdate = $filter('date')($scope.eventdate, 'yyyy-MM-dd'); 

的解決辦法是宣佈新型號爲MD-日期選擇器,並得到這樣

它的價值在JS

$scope.eventdate = $filter('date')($scope.mddate, 'yyyy-MM-dd'); 

在HTML

<md-datepicker ng-model="mddate" md-placeholder="Enter date" required></md-datepicker> 

希望這可以幫助你

-1

我有完全相同的問題,但答案上面沒有幫助。

使用新的Date()初始化datepicker,但是當嘗試用服務器返回的值進行初始化時,我得到了上述錯誤 - 儘管它們看起來是相同的格式。

最後,我不得不顯式創建一個Date對象,然後使用Parse設置它的值。

 var date = ctrl.data.fromServer; 
     ctrl.data.fromServer= new Date(); 
     if (date != undefined) 
     { 
      ctrl.data.fromServer.setTime(Date.parse(date)); 
     } 
+0

是的,你的服務器返回文本。您必須將文本顯式轉換爲日期。 –

0

很有可能你的date對象Date類型的沒有,請確保它是唯一的類型,而不是string或別的東西。

這就是爲什麼我得到這個問題,以及我如何解決它。希望這可以幫助。