当Json对象来自Server时,date始终存储为字符串。
我们需要在输入框中显示该日期值以允许编辑/更新对象。但是
<Input type="date>
只能理解日期对象(这是正确的),因此,我们需要在从AJAX调用接收json之后将日期字符串转换为日期对象。在SO上有几个线程,试图实现相同的,但我发现这些线程无法正常工作的接受答案(甚至不是plunker)。
Convert AJAX date to Javascript date for use with ng-model
angularjs | date input not showing ng-model value
我尝试使用指令解决我的问题,并创建了以下指令。 我试图通过ngModel。$ formatters来引导日期对象。 jsonStrToDate中的Console.log将str打印为空字符串。
它不起作用,我的指令有什么问题?): -
.html
<input type="date" name="dateOfReading" class="form-control" id ="dateOfReading"
ng-model="bpReport.dateOfReading"
json-string-to-date
min="1970-01-01" max="2099-12-31" required />
.js
window.angular.module('myApp.directives', [])
.directive('jsonStringToDate', function(){
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, element, attr, ngModel) {
console.log('directive linking called');
function jsonStrToDate(str) {
console.log('input str value' + str + ', and typeof is ' + typeof str);
var d= new Date(str);
console.log(d);
return d;
}
ngModel.$formatters.push(jsonStrToDate);
ngModel.$parsers.push(function(value) {
console.log("value from parser method:- "+ value);
return value;
});
}
};
});
现在我正在使用AngularJS 1.3.0 RC1 版本1.2.20也有同样的问题。