2012-03-16 4 views
3

정규화 된 데이터가 포함 된 컬렉션을 반환하는 REST 서비스가 있습니다.녹아웃 매핑 플러그 인으로 정규화되지 않은 데이터 사용

root 
. 
root:CollectionItem[0].alpha 
root:CollectionItem[0].beta 
root:CollectionItem[0].zappa 
. 
root:CollectionItem[1].alpha 
root:CollectionItem[1].children[0].MoonUnit 
root:CollectionItem[1].children[1].Dweezil 
root:CollectionItem[1].zappa 
. 
root:CollectionItem[2].alpha 
root:CollectionItem[2].beta 
root:CollectionItem[2].zappa 

이 같은 비 표준화 된 JSON 데이터와 매핑 플러그인을 사용하기위한 최선의 전략은 무엇입니까 : 예를 들어, 다음과 같이 보일 수 있는가? 문제는 PlugIn이 템플릿으로 CollectionItem [0]을 사용하는 것 같지만, 결과를 통해 foreach 할 때 root.CollectionItem [1] .beta (존재하지 않음)를 읽으려고하면 Knockout이 폭발적입니다.

EDIT # 1 : 내가 생각하기에 녹아웃은 인기가 없다고 생각합니다.이 질문은 Tumbleweed Award를위한 것 같습니다. :-(

는 편집 # 2는! 넉 아웃 포럼 http://groups.google.com/group/knockoutjs/browse_thread/thread/6705c222481c7b75#에 가능한 대답있어, 그래서 다른 다니지 상에 대해 걱정할 필요가 없습니다 :-)

+1

올바른 태깅은 혼란을 방지하는 데 도움이됩니다. :) – Charles

+0

와이오밍에서 영감을 얻은 태그를 수정 해 주셔서 감사합니다. (나는 와이오밍에서 태어났다. 거기에 많은 텀블러가있다!) –

답변

3

가 나는 사람의 응답은 이름이있어 Knockout JS 포럼의 NTB. 다음은 JS fiddle에 대한 그의 해결책입니다. 내 자신의 질문에 답하기를 싫어하지만 그것이 그 것이다. 여기

http://jsfiddle.net/PxeyY/

자신의 요약이다 :

"나는 가끔 수동으로 이" "데이터를 마사지 매퍼를 호출하기 전에, 또는 는 null로 설정 가능한 모든 속성을 가진 더미 쉘 객체를 생성 (또는 배열의 경우 []] - $ .extend (dummy, real)를 사용하여 을 만들면 .fromJS()와 함께 작업 할 수 있습니다.이 패턴을 사용하여 배열을 반복해야하지만 그럴 수 있습니다. 어쨌든 내 .02.

"깨끗한 해결책을 직접 듣고 싶습니다."

+1

NTB가 제안한 솔루션 (jsfiddle 링크 참조)은 실제로 비정규 화 된 데이터에 대해 훌륭하게 작동한다. 모델을 deserialize하여 RESTful API에 다시 보내려면 모델을 반복적으로 살펴보고 null 값이있는 모든 빈 배열과 노드를 '삭제'하면됩니다. –