Javascript ui引导计时器选择器和ng模型值转换器
我的服务器端json使用“HH:mm:ss”存储时间数据。 我使用UI Bootsrap TimePicker让用户输入时间 我使用ngModelController的$parser和$formatters从服务器端json映射到前端timepickerUI。从UI到数据的转换按预期进行,但是我很难将数据转换回UI 错误消息如下所示: 'Timepicker指令:“ng model”值必须是日期对象,自1970年1月1日起的毫秒数或表示RFC2822或ISO 8601日期的字符串。' 这是HTML标记Javascript ui引导计时器选择器和ng模型值转换器,javascript,json,angularjs,angular-ui-bootstrap,Javascript,Json,Angularjs,Angular Ui Bootstrap,我的服务器端json使用“HH:mm:ss”存储时间数据。 我使用UI Bootsrap TimePicker让用户输入时间 我使用ngModelController的$parser和$formatters从服务器端json映射到前端timepickerUI。从UI到数据的转换按预期进行,但是我很难将数据转换回UI 错误消息如下所示: 'Timepicker指令:“ng model”值必须是日期对象,自1970年1月1日起的毫秒数或表示RFC2822或ISO 8601日期的字符串。' 这是HTM
<timepicker ng-model="HotelProperties.CheckOutTime" time-span-converter hour-step="hstep" minute-step="mstep" show-meridian="false"></timepicker>
计时器选择器希望您传入日期对象,而不是字符串 快速帮助:-
你的小时:分钟是字符串,所以它引发了这样一个错误,我只是 想办法摆脱它。简单的继续安装MomentJS 格式如下$scope.timing=moment('09:30am','hh:mm A')。格式() 几乎没有长时间的解释:- 从时间选择器 您可能需要使用AngularUI中的时间选择器(ui.bootstrap.Timepicker) ng模型:提供时间状态的日期对象 我正在使用将日期从字符串格式化为日期对象 见
如果需要,您可以使用相同的库将时间转换回字符串。您的小时:分钟是字符串,因此它会引发这样一个错误,我只是想如何消除它。简单地安装MomentJS和格式如下$scope.timing=momente('09:30am','hh:mma').format();它解决了你的问题
.directive("timeSpanConverter", ['$filter',function($filter) {
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, element, attr, ngModelCtrl) {
function fromJson(value) {
if (!value) return new Date();
var parts = value.split(':');
var hh = Number(parts[0]);
var mm = Number(parts[1]);
var date = new Date();
date.setHours(hh);
date.setMinutes(mm);
return date;
}
function fromUser(value) {
var time = $filter('date')(value, "HH:mm:00");
return time;
}
ngModelCtrl.$parsers.push(fromUser);
ngModelCtrl.$formatters.push(fromJson);
}
}
}])