я хочу сделать следующее:AngularJs - Директива для изменения входного форматирования
У меня есть объект даты в моей модели контроллера, и я хочу, чтобы позволить пользователю изменить его. Пользователю должны быть предоставлены два поля ввода. Первое поле ввода должно изменить дату, а другое - время. Оба поля ввода должны работать с той же моделью даты.
<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 ...
Мои вопросы:
- Как я могу смоделировать это?
- Является ли этот подход действительным с угловой философией или я делаю что-то странное здесь?
- Могу ли я использовать ng-модель и мою директиву формата даты?
- Есть ли более простой способ сделать это?
Итак, вы когда-нибудь найти хорошее решение для этого? :) Я вхожу в аналогичную позицию, где я хочу сохранить свойство модели как объект Date, но все же разрешить пользователю редактировать его в поле редактирования с примененной маской даты. –