У меня есть модель, которая поставляется со значениями времени как text
например, 10:00:00
что означает 10:00 AM
. Теперь мне нужно, чтобы пользователь мог изменять эти значения, но это должен быть не просто input type="text"
, потому что было бы трудно изменить время для user
на IOS. И использование type="time"
не работает, потому что тогда модель должна быть объектом даты.
Любые идеи, как я могу сделать что-то дружелюбное и сохранить мой глупый формат модели?
Это был правильный намек, большое спасибо. Здесь решение для других..
mainModule.directive('stupidTimeConverter', function() {
var directive = {};
directive.restrict = 'A';
directive.require = 'ngModel';
directive.link = function(scope, element, attrs, ngModel) {
// Formatters change how model values will appear in the view
ngModel.$formatters.push(function(value) {
return moment(value, "HH:mm:ss").toDate();
});
// Parsers change how view values will be saved in the model
ngModel.$parsers.push(function(value) {
return moment(value).format("HH:mm:ss");
});
};
return directive;
});
$parsers
parser и$formatters
formatters docs.angularjs.org/api/ng/type/ngModel.NgModelController