'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
그러면 대신에 서비스를 추가하는 것이 좋습니다. 지시어 헛소리 없이도 모든 컨트롤러에서 사용할 수있는'convertToDate' 메서드가 제공됩니다. –