【发布时间】:2014-02-14 14:17:42
【问题描述】:
所以我们有一个模型,其中包含“时间”,格式为“14:00:00”。我们正在使用 angular-boostrap 的时间选择器,但它需要一个 JS 日期对象或一个 ISO 日期时间字符串。
我的第一个想法是做一个指令,将 $parser/$formatter 添加到 ngModel 控制器,在输入和输出的过程中将其转换为我们需要的格式。这非常适合输出,但不适用于输入。
我在这里做了一个小提琴http://jsfiddle.net/HB7LU/1820/
myApp.directive('timespan',function($filter){
var dateFilter = $filter('date');
function parser(data){
return dateFilter(data,'HH:mm:ss');
};
function formatter(data){
var converted = '2000-01-01T' + data + '-06:00';
return converted;
};
return {
require: 'ngModel',
link:function(scope,element,attrs,ctrl){
ctrl.$parsers.unshift(parser);
ctrl.$formatters.unshift(formatter);
}
};
});
当您打开小提琴时,时间选择器不会反映 12:00:00。如果您查看控制台,它会抱怨 ngModel 格式错误。如果您使用选择器更改时间,您会看到 $scope.myModel.time 的格式正确。
如何在 ngModel 进入 timepicker 之前将其转换为正确的格式?
【问题讨论】:
标签: angularjs angularjs-directive