2014-04-27 7 views
0

내가 뷰 모델에검도 날짜 선택기 문제

<div id="myGrid" data-role="grid" 
      data-bind="source: viewModel" 
      data-sortable="true" 
      data-pageable="true" 
      data-filterable="true" 
      data-resizable="true" 
      data-editable = "incell" 
      data-selectable="true" 
      data-columns='[ 
      { field: "Name", title: "Name" }, 
      { field: "StartDate", title: "Start date", format: "{0:dd/MM/yyyy}"}, 
      { field: "EndDate", title: "End date", format: "{0:dd/MM/yyyy}"},    
      { field: "ClosingDate", title: "Closing date", format: "{0:dd/MM/yyyy}"}]' 

      data-toolbar ='[{name:"create"}, 
         {name:"save"}]'> 
    </div> 

필드 아래 코드처럼 내 솔루션 검도 UI를 사용하고있다 "날짜"유형.
시작일을 2014 년 4 월 16 일로 선택한 다음 변경 사항을 저장한다고 가정 해 보겠습니다. 그러나 업데이트 후 시작일은 2014 년 5 월 15 일입니다. 그리드의 각 날짜 셀에서 발생합니다. 날짜가 내가 선택한 것보다 적은 이유는 무엇입니까?
이 문제를 해결할 방법이 있습니까?

답변

0

여기에 주어진 대답을 참조하십시오 : javascript Date.parse

나는 문제가 지금 사용하고있는 브라우저에 의해 발생한다고 가정합니다. IE에서 날짜 형식을 사용하는 데 많은 어려움이있었습니다. 크롬이나 파이어 폭스에서 날짜를 만들면 정확하게 원했지만 IE에서는 MM/dd/yyyy가 아닌 다른 형식으로 작성 또는 파싱 할 때 Date 객체의 잘못된 날짜가 파싱 된 것을 알 수있었습니다.

내 제안은 내가 링크 된 대답과 동일합니다 : 열의 '형식'필드를 사용하는 대신 템플릿을 사용하여 직접 구문 분석하십시오.

function parseDate(date) { 
    if (date == null) return ''; 

    //using the .slice() method keeps the leading '0' if MM or dd is single digit 
    var rtn = ('0' + date.Date()).slice(-2) + '/' + 
       ('0 + (date.Month() + 1)).slice(-2) + '/' + 
       date.FullYear(); 

    return rtn; 
} 
:
data-columns='[ 
    { field: "Name", title: "Name" }, 
    { field: "StartDate", title: "Start date", template: "# parseDate(StartDate) #"}, 
    { field: "EndDate", title: "End date", template: "# parseDate(EndDate) #"},    
    { field: "ClosingDate", title: "Closing date", template: "# parseDate(ClosingDate) #"]' 

는 그런 다음 parseDate(date) 기능을 가지고