2014-03-13 6 views
0

서버에서 json을 가져 왔습니다. 배열 (Schedule)과 같은 것을 포함하지만, 각 Schedule 요소는 두 개의 다른 객체로 구성됩니다.녹아웃 매핑 : 두 개체를 하나로 결합

Schedule 요소는 다음과 같이이다 :

{"Schedule":[ 
    {"InputItem": {"Id" : "1231", "Name": "TempName"}, 
    "OutputItem": {"CalcId" : "a1231", "CalcName": "CakcTempName"} 
    }, 
    ... 
]}; 

그래서, 녹아웃에 나는 위에서 설명한대로 jsonData을 받아보기 모델 데 : 내가 자기를 얻고 그 결과

var viewModel = function(jsonData) { 
    var self = this; 

    var customMapping = { 
     //'Schedule': { 
     // 
     // } 
    }; 
    ko.mapping.fromJS(jsonData, customMapping, self); 
}; 

을 . InputItemCalculatedItem을 포함하는 일정 배열 그러나 InputItemCalculatedItem을 하나의 객체 (예 : ScheduleItem)로 결합하여 매핑 한 후에 InputItemCalculatedItem이 없지만 하나만 ScheduleItem이 될 수 있도록 사용자 정의 매핑을 만들어야합니다.

가능합니까?

P. 이유는 그리드 내에 Schedule 배열을 표시하는 것이 훨씬 쉬워지기 때문입니다. 그리드의 절반은 InputItems이지만 그리드의 절반은 CalculatedItems입니다. UI에서는 해당 항목의 분리가 필요하지 않습니다. 나는 또한 서버 측 모델을 변경하면서이 문제를 해결할 수 있지만 여기서는 KO 부분에 대해 묻습니다.

답변

0

documentation on the mapping plugin을 확인하십시오. "create '를 사용하여 객체 생성을 커스터마이징하기"섹션은 매핑 된 데이터 생성을 제어하기위한 자신 만의 로직을 정의하는 방법을 설명합니다. 이렇게하면 간단한 jQuery 맵을 사용하여 필요한 객체 구조에 투영을 수행 할 수 있습니다.