2015-01-02 67 views
1

我有一個視圖列出了可以通過單擊行末尾的「編輯」進行編輯的一組記錄。記錄在「顯示」模式下正確顯示,但在轉換到編輯模式時,未填充日期字段。在呈現頁面時,我在控制檯中獲取每條記錄的下面的錯誤信息。AngularJS輸入控件的日期格式錯誤

Error: [ngModel:datefmt] Expected 2014-12-28T00:00:00 to be a date

我試着創建一個指令來轉換日期,但這似乎並沒有工作。

指令:

app.directive('jsonDate', function ($filter) { 
    return { 
     restrict: 'A', 
     require: 'ngModel', 
     link: function (scope, element, attrs, ngModel) { 

      //format text going to user (model to view) 
      ngModel.$formatters.push(function (value) { 
       var date = $filter('date')(value, ['yyyy-MM-dd']); 
       return date; 
      }); 

      //format text from the user (view to model) 
      ngModel.$parsers.push(function (value) { 
       var date = new Date(value, 'dd/MM/yyyy'); 
       return date; 
      }); 
     } 
    }; 
}) 

的視圖:

<td> 
    <p data-ng-hide="competition.editMode">{{ competition.competitionDate | date: 'dd/MM/yyyy' }}</p> 
    <input data-ng-show="competition.editMode" type="date" data-ng-model="competition.competitionDate" json-date /> 
</td> 

如果我輸出的值日期到控制檯它報告它作爲是無效的日期。我該如何解決這個問題?

+0

您使用Firefox瀏覽器嗎? – Sudarshan

+0

請參閱日期:dd/MM/yyyy您正在通過此格式,但html-5日期預計格式爲2014-12-28所以請嘗試yyyy-MM-dd – Sudarshan

+0

這是在Chrome中,我已將所有日期格式更改爲yyyy-MM-dd仍然保持不變。看來只有ngModel。$ formatters被調用,而不是第二部分ngModel。$ parsers? – Moonie

回答

0

這是什麼意思是ngModel期待一個javascript日期對象。在您的行加載代碼中,將對象的日期(字符串)成員轉換爲Date對象。