Я хочу сделать следующее:
У меня есть объект даты в моей модели контроллера, и я хочу, чтобы пользователь мог его изменить. Пользователю должны быть предоставлены два поля ввода. Первое поле ввода должно изменить дату, а другое - время. Оба поля ввода должны работать с той же моделью даты.
<input ng-model="model.date" date-format="YYYY-MM-DD">
<input ng-model="model.date" date-format="HH:mm:SS">
Я не нашел литературы об этой привязке. Обычно директива ng-model заботится о значении поля ввода. Теперь я хочу переписать это значение с помощью собственного форматирования. Кроме того, если пользователь меняет ввод, изменения должны быть проанализированы и помещены обратно в объект даты.
Поскольку манипуляция с датами в vanilla js выглядит странно, я использовал moment.js для форматирования и анализа дат и строк.
Мой текущий подход выглядит следующим образом:
app.directive('dateFormat', function() {
return {
restrict: 'A',
link: function(scope, el, at) {
var format = at.dateFormat;
scope.$watch(at.ngModel, function(date) {
var result = moment(date).format(format);
el.val(result);
});
}
};
});
Однако это сломается, как только я хочу изменить входное значение в браузере. Я получаю несколько NaN: NaN...
Мои вопросы:
- Как я могу моделировать это?
- Является ли этот подход действительным с философией angular или я делаю что-то странное здесь?
- Могу ли я использовать ng-model и мою директиву формата даты вместе?
- Есть ли более простой способ сделать это?