angularjs - ввод даты с ng-моделью в миллисекундах

У меня есть число, которое представляет время в миллисекундах с 1970 года, например.

1388664300000

с:

{{ day.date | date: "dd.MM.yyyy" }} 

он будет отображать 07.05.2015! Все идет нормально. Теперь мне нравится вставлять те же данные в поле ввода:

<input type="date" ng-model="day.DUTY">

чтобы позволить пользователю настроить дату.

Ничего не отображается, потому что для поля ввода требуется объект даты! Я создал фильтр, чтобы изменить свой номер на сегодняшний день:

var DateFilter = function() {
        return function(data){

        date = new Date(data);
        return date;
      }
    }

Но я не могу понять, как совместить это с моим полем ввода. Может это не правильный подход? Любые идеи ?


person phil-k    schedule 26.05.2015    source источник
comment
Попробуйте day.date = новая дата (day.date)?   -  person reptilicus    schedule 26.05.2015
comment
Это не сработает! Ошибка синтаксиса   -  person phil-k    schedule 26.05.2015
comment
Вам нужно сделать директиву для манипулирования данными и представить их по-разному.   -  person UserNeD    schedule 26.05.2015
comment
Кстати, в angular есть встроенный фильтр по дате. проверьте здесь: docs.angularjs.org/api/ng/filter/date   -  person UserNeD    schedule 26.05.2015
comment
Вы сможете найти решение здесь: stackoverflow.com/questions/24517883/   -  person UserNeD    schedule 26.05.2015


Ответы (1)


Взгляните на Как привязать дату просмотра к миллисекундам модели с Angularjs. Как это объяснялось; Вы можете использовать следующее для динамического изменения формата данных во время привязки:

ngModel.$parsers.push(fromUser);  
ngModel.$formatters.push(toUser);
person UserNeD    schedule 26.05.2015
comment
Спасибо за Ваш ответ. Я почти закончил, но есть одна проблема, которую я не понимаю. Вот моя скрипка: ссылка! Например, если вы откроете это в Chrome, поле ввода с типом даты останется пустым! Относительно этого официального примера документа angular: ссылка Дата показана правильно ! Где моя ошибка? На мой взгляд, я делаю то же самое с codereturn new Date(text);code - person phil-k; 27.05.2015
comment
Причина в том, что вы не используете форматы даты Chrome. Вы можете проверить правильный формат здесь w3. org/TR/html-markup/datatypes.html#common.data.datetime-def Тогда вы можете без проблем использовать input type=date. Если вы хотите использовать этот формат, просто поместите поле ввода из type=date вместо type=text, и проблема будет решена. - person UserNeD; 27.05.2015
comment
использовать новую дату().toISOString().split(T)[0]; // 2014-09-30 для создания даты в правильном формате - person UserNeD; 27.05.2015
comment
Большое спасибо ! @Назанин - person phil-k; 28.05.2015