文字列の日付を 'date'に設定されたhtml入力で動作させるように変換しようとしています。AngularJS指示文の文字列を日付に変換する
だから、私は次のような角度のアプリがあります。次のように
(function() {
var app = angular.module('test', []);
app.controller('MainCtrl', function($scope) {
$scope.load = function() {
$scope.message='2017-12-23T00:00:00Z';
};
});
app.directive('convertDate', function() {
return {
restrict: 'A',
scope: {
ngModel: '='
},
link: function (scope) {
console.log(scope);
console.log(scope.ngModel);
if (scope.ngModel) scope.ngModel = new Date(scope.ngModel);
}
};
});
})();
をそれから私のHTMLは次のとおりです。
<div ng-controller='MainCtrl'>
<input type="date" convert-date ng-model="message">
<button ng-click="load()">load</button>
</div>
私は、ロードボタンをクリックすると、私は次のエラーを取得:
をエラー:[ngModel:datefmt] http://errors.angularjs.org/1.6.4/ngModel/datefmt?p0=2017-12-23T00%3A00%3A00Z
私はエラーiを理解していますそれは文字列であり、日付が必要なので、それは私の指示の理由です。
しかし、このディレクティブを使用しても、私はまだエラーが発生します。
私には何が欠けていますか?
おかげ
コリン・
なぜ入力にディレクティブを追加する必要がありますか?単純に 'ng-change =" convertToDate() "'を入力に追加して、入力をコントローラ自体の中の日付に変換するのはなぜでしょうか。この場合、指示は必要ありません。 –
はい、私はこれを使用する必要があるページの負荷があり、各ページには独自のコントローラがあります。私は各コントローラにメソッドを必要としません。 – Sun
次に、サービスを追加することをお勧めします。これは、Directive shenanigansを必要とせずにすべてのコントローラでジョブを実行できる 'convertToDate'メソッドを提供します。 –