2013-04-17 3 views
1

중첩 넣지브리즈 data.results 내가 다음 계층 클래스가 JSON

[HttpGet] 
public IQueryable<HClass> Items() 

내가있는 기능을 가지고 내 뷰 모델 :

function getItems() { 
     return entityQuery.from('Items') 
      .using(manager).execute() 
      .then(success) 
      .fail(queryFailed); 

     function success(data) { 
      vm.items = data.results; //Problem here. 
     } 
    } 

디버그 모드에서 나는 "data.XHR.responseText는"중첩 된 JSON 공단이 있는지 검토 자녀의 모든 배열이있는 모든 항목이 있지만 "data.results"에는 자녀가없는 부모 만 있습니다.

제발 도와주세요.

답변

1

이것은 의도적으로 설계된 것입니다. 따라서 data.results에는 쿼리 한 즉각적인 결과 즉, 최상위 '항목'이 있습니다. 그러나 결과 항목 중 하나 인 "Children"속성을 드릴하면 자식이 표시됩니다.

그렇지 않은 경우 ApiController 클래스에서 [BreezeController] 특성을 사용하고 있는지 확인하십시오. 이 속성은 JSON.NET serializer가 각 json 'entity'에 '$ type'속성을 추가하도록 구성합니다. 이 속성이 표시되지 않으면 속성이 누락 된 것이 좋습니다. $ 유형 정보가 없으면 산들 바람은 아이들을 엔티티로 인식하지 않고 무시할 것입니다.

(측면 노트, 당신은 또한 JsonResultsAdapter를 사용하거나 [JsonFormatter] 비슷한 일을 할 속성,하지만 [BreezeController] 방법은 간단 수)

나는 [BreezeController] 속성을 사용하고
+0

'[BreezeController] 공개 클래스 MyController : ApiController {...}',하지만 Child 속성으로 드릴하면이 내용이 비어 있습니다. – kuskunko

+0

당신은 data.XHR.responseText에 "각각의 자식 배열을 가진 모든 항목으로 완성 된 중첩 JSON"이 있다고 언급했습니다. 그렇다면 $ type 속성이 자식에 표시됩니까? –

+0

예, 저는 jSON의 일부를 잘라 냈습니다 :'{{$ id ":"1 ","$ type ":"Project.Entities.HClass, Project.Entities ","Id ": 1,"Name " 항목 1 ","어린이 ": [{"$ id ":"2 ","$ type ":"Project.Entities.HClass, Project.Entities ","Id ": 26,"ParentId ": 1,"Name ":"Item 26 ","Children ": [{... ' – kuskunko