AngularJs - Dyrektywa modyfikująca formatowanie wejścia
Chcę wykonać następujące czynności:
Mam obiekt daty w moim modelu kontrolera i chcę, aby użytkownik go zmodyfikował. Użytkownik powinien otrzymać dwa pola wejściowe. Pierwsze pole wejściowe powinno zmodyfikować datę, a drugi czas. Oba pola wejściowe powinny działać w tym samym modelu daty.
<input ng-model="model.date" date-format="YYYY-MM-DD">
<input ng-model="model.date" date-format="HH:mm:SS">
Nie znalazłem literatury na temat tego wiązania. Normalnie dyrektywa ng-model dba o wartość pola wejściowego. Teraz chcę nadpisać tę wartość własnym formatowaniem. Ponadto, jeśli użytkownik zmieni dane wejściowe, zmiany powinny zostać przeanalizowane i ponownie wprowadzone do obiektu daty.
Ponieważ manipulowanie datami w waniliowym js jest trochę dziwne, użyłem moment.js do sformatowania i przeanalizowania dat i łańcuchów.
Moje obecne podejście wygląda tak:
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);
});
}
};
});
Jednak nastąpi to, gdy tylko chcę zmienić wartość wejściową w przeglądarce. Dostaję trochę NaN: NaN ...
Moje pytania to:
Jak mogę to modelować?Czy to podejście jest ważne z filozofią kanciastą, czy też robię tu coś dziwnego?Czy mogę używać modelu ng i mojej dyrektywy formatu daty razem?Czy jest to łatwiejszy sposób?