1

Я использую всплывающее окно angular-ui-datepicker, и я пытаюсь сохранить сохраненное значение даты как строку только с датой. M/d/yyyyPersist Angular UI Bootstrap Datepicker как строка для API

ввода после выбора даты правильно 5/11/2015, но значение, сохраненное является Date

Mon May 11 2015 00:00:00 GMT-0400 (Eastern Daylight Time) 12:00AM

Есть ли способ, чтобы всегда хранить значение в качестве даты string и не как Date объекта?

<p class="input-group"> 
    <input type="text" datepicker-popup="M/d/yyyy" ng-model="event.date" 
     is-open="datePickers['date']" class="form-control" /> 
    <span class="input-group-btn"> 
     <button type="button" class="btn btn-default" 
      ng-click="toggleDatepicker('date', $event)"> 
      <i class="fa fa-calendar"></i> 
     </button> 
    </span> 
</p> 

В вышеприведенном случае мне нужно данные, чтобы всегда быть строка даты, например:

{ 
    date: '5/11/2015' 
} 

и не

{ 
    date: `Mon May 11 2015 00:00:00 GMT-0400 (Eastern Daylight Time) 12:00AM` 
} 
+1

Я бы сделал пользовательскую директиву и воспользовался форматированием ngModel $, чтобы установить $ modelValue равным $ viewValue, но не делать $ render. Не проверено, но это то, что я попробую. См. Этот вопрос и ответ: http://stackoverflow.com/questions/27491300/set-modelvalue-without-changing-viewvalue – jme11

+0

Хм, мне нужно больше исследовать угловые директивы, чтобы добиться этого. Любые примеры директивы, которая управляет моделью, не влияя на ее рендеринг? – hunter

+0

Задать вопрос в моем отредактированном комментарии ... – jme11

ответ

0

Я не думаю, что есть простой (стандарт) Функция форматирования даты в формате JavaScript, но я думаю, вы всегда могли бы построить строку M/d/yyyy, используя, например,:

getDate() // Returns the date 
getMonth() // Returns the month 
getFullYear() // Returns the year 

(more here)

Я также Мессинг вокруг немного с этим сам по различным проектам, и вы могли бы хотеть рассмотреть Date.toISOString. Я обнаружил, что Angular автоматически десериализует строки ISO 8601 в JSON для фактического объекта Date для дальнейшего использования, и наоборот, он также будет сериализовать объекты даты в этом формате прозрачно, так что вам не придется об этом беспокоиться.

+0

Я знаю, как отформатировать даты, но я пытаюсь сделать это автоматически, используя Angular UI Datepicker – hunter

+0

@hunter Извините, я вижу, что я был неясен, но это то, о чем я говорил в последняя часть моего сообщения. Я обнаружил, что все работает peachy при использовании объектов Date в качестве значения модели, поэтому вам нужно только беспокоиться о сохранении его в виде строки. Это зависит от того, что вы имеете в виду, сохраняя, но если вы, например, используете $ http для хранения/загрузки с сервера, он автоматически преобразует строки/из строк ISO8601. Поэтому, если вы можете жить с использованием объекта Date в качестве вашей модели (что, по-видимому, требует того, что в первую очередь требует угловой ui-datepicker), все должно получиться автоматически. – Fasermaler

Смежные вопросы