2015-11-17 4 views
0

У меня есть массив данных в формате JSON:Как отформатировать JSon Дата и привязать его к DatePicker Control

[{"AccountStatementID": 2,"CompanyID": 1,"Description": "test","Amount": 1000,"ReceiptDate": "/Date(1447261200000)/","Type": "Payment"}]; 

Я успешно загрузить данные в таблицу и отображать ReceiptDate в правильном формате (dd/MM/yyyy). Когда я нажал кнопку редактирования, ReceiptDate в элементе управления DatePicker по-прежнему /Date(1447261200000)/.

Я отформатирован с использованием momentjs следующим образом:

ReceiptDate: moment(self.ReceiptDate).format('DD/MM/YYYY') 

Кроме того, DatePicker не появляется.

Почему ReceiptDate не отформатирован, как его решить и воссоздать datepicker?

Демоверсия jsfiddle.

ответ

0

Я видел, что вы выбрали дату и время для чтения. Именно по этой причине дампикер не появлялся, когда был щелчок.

Я изменил некоторые детали минуты в вашей скрипке и закончил с этим jsfiddle.

Один из них - это сохранение объекта времени Javascript в ваших данных, так как вы вызываете момент и форматируете его.

var data = [ 
    { 
    "AccountStatementID": 2, 
    "CompanyID": 1, 
    "Description": "test", 
    "Amount": 1000, 
    "ReceiptDate": new Date(1447261200000), 
    "Type": "Payment" 
    } 
]; 

Я не мог понять, где вы устанавливаете дату во время редактирования. Таким образом, call moment(). Format() также выдает требуемый формат при редактировании. (Удалите readonly на сегодняшний день при редактировании, если требуется).

+0

Я устанавливаю только для чтения, потому что хочу получить значение даты из (calendar) datepicker. Если вы нажмете ссылку и нажмите текстовое поле даты получения, она отобразит календарь. Из ссылки, которую вы даете, календарь по-прежнему не отображается – Willy

+0

Я не удалял только для обновления существующих данных. Нажмите «Добавить новый отчет об учетных записях», а затем нажмите «Ввод даты поступления». –

0

Ваших foreach петля над AccountStatements, которые вы населяющей с необработанными данными:

var data = [ 
    { 
     "AccountStatementID": 2, 
     "CompanyID": 1, 
     "Description": "test", 
     "Amount": 1000, 
     "ReceiptDate": "/Date(1447261200000)/", 
     "Type": "Payment" 
    } 
]; 

...

self.AccountStatements = ko.observableArray(data); 

При нажатия на кнопке редактирования, одна записи этого исходных данных, отправленное функцию редактирования, и вы установите ее как значение $root.AccountStatement:

self.AccountStatement(accountStatement); 

Итак, ваш редактор просто работает с необработанными данными. В какой-то момент в этом процессе необходимо конвертировать исходные данные в чем-то, как вы создали для индивидуальной частной переменной

var AccountStatement 

Я бы порекомендовал вам создать функцию, которая принимает необработанный запись данных и возвращает что-то этой формы. Используйте его для преобразования вашего входного массива перед назначением self.AccountStatements.