2016-07-22 2 views
2

나는 그들 각각이 구조처럼 객체의 배열을 가지고있다.Jstree : 정의되지 않은 속성 자식은 읽을 수 없습니다. 타이밍 문제? <pre><code>var data = [{ "code" : "i1", "name" : "Industry 1", "parentCode" : "i0" }, { //and more items just like that one }]; </code></pre> <p></p> 그래서 난 계층보기를 구축 할 <code>jstree</code>을 사용하고 있습니다 :

datatree = $.map(data, function (item) { 

     return { 
      id : item.code, 
      text : item.name, 
      parent : item.parentCode 

     }; 

    }); 

을 그리고 난 내 hierarchy DIV 내부의 실제 트리를 초기화 : jstreeidtext 필요하기 때문에,이 같은 data 배열을지도

$('#hierarchy').jstree({ 

    "core": { 
     "themes": { 
      "variant": "large" 
     }, 
     "data": datatree, 
    }, 
    'check_callback': true, 
    "checkbox": { 
     "keep_selected_style": false 
    }, 
    "plugins": ["wholerow", "search", "unique"] 
}); 

이 트리를 구축하고 잘 작동 할 때 원래의 배열은 꽤 간단합니다. 아마도 한두 단계의 계급이 있습니다. 내가 정확히 대안 배열 빌드 같은 방식으로,하지만 parentages의 5 개 수준으로 테스트하는 경우, 콘솔 오류가 발생합니다 :

Uncaught TypeError: Cannot read property 'children' of undefined 

을 그리고 그것은 jstree 원래 코드에서이 행을 가리키는 것 :

k[c[o].parent.toString()].children.push(c[o].id.toString()), 

jstree에로드 대기중인 항목이 남아 있기 때문에 children 배열을 만들 수 없기 때문에 타이밍 문제라고 의심됩니다. 그러나 나는 내 가정에서 틀릴 수도 있습니다.

간단한 상속성이있는 배열의 경우 코드가 완벽하게 작동하지만 부모 레벨이 여러 개일 때 코드가 깨지면 어떻게 될까요? 내가 생각하기에 타이밍이 맞습니까, 아니면 더 깊은 문제가있을 수 있습니까?

나는 this question을 읽었지만 처음에는 사용자가 AJAX로 작업하여 로컬 객체를 선언하는 문제를 해결 한 것으로 보입니다. 광산은 이미 현지에 있으며 어떤 경우에는 실제로 작동하기 때문에 무슨 일이 일어나는지 잘 모르겠습니다.

{ 
    id : item.code, 
    text : item.name, 
    parent : item.parentCode 
}; 

"부모"는 unexisting ID를 가리키는 id를 가지고 : 코드에서 때,

+0

해당하지 않고 부모와

  • 점검 항목. 여기에서 당신을 도울 수있는 디버그 장치가 있어야합니다. – Tomalak

  • +0

    작동하지 않는 다단계 소스 배열의 예를 게시 할 수 있습니까? –

    답변

    4

    그 오류가 나와 함께 발생합니다. 하나의 항목에 부모가 없으면 부모 "#"이 있어야합니다.
    So :

    • 부모가 null이거나 정의되지 않은 항목을 확인하십시오. 당신이 (SO 또는 여기에 실행 가능한 코드에서)는 A jsFiddle에서 오류를 재현 경우 가장의 부모
    +1

    내 하루 저축 해 주셔서 감사합니다 :) – Khateeb321