2012-01-27 1 views
0

나는 jstree의 인스턴스를 가지고있다. json과 아약스입니다.Jstree가 li 요소에 id를 할당하지 않는다.

다음은 내가 트리를 만드는 방법입니다.

 $("#tree").jstree({ 
      "plugins" : ["themes", "json_data", "ui"], 
      "json_data" : { 
       "ajax" : { 
        "type": 'GET', 
        "url": function (node) { 
         var nodeId = ""; 
         var url = "" 
         if (node == -1) 
         { 
          //first url called is static 
          url = "myUrl"; 
         } 
         else 
         { 
          //click on a node "li", get the id, append it to the url. 
          nodeId = node.attr('id'); 
          url = "myUrl" + nodeId; 
         } 

         return url; 
        }, 
        "success": function (new_data) { 
         //get the data topNode out of the json object 
         new_data = new_data.topNode; 

         return new_data; 
        } 
       } 
      }, 

     }); 

다음은 출력물입니다. 나무가 id를 가지고 있지 않은 <LI> 요소를 렌더링 그러나

<div id="tree" class="jstree-classic jstree jstree-0 jstree-focused jstree-default"> 
    <ul> 
     <li class="jstree-closed jstree-last"> 
      <ins class="jstree-icon">&nbsp;</ins> 
      <a class="" href="#">Item 1</a> 
     </li> 
    </ul> 
</div> 

. <LI>에 자동으로 추가되어야합니다. 나는 무엇을 놓치고 있습니까? 아래의 경우는 데이터가 아약스에서 반환

+0

은 JSON에서 아약스 반환 ID를합니까? – Radek

+0

예. 만약 내가 newData.topNode.id를 알리면 정확한 응답을 얻는다. –

+0

'new_data'의 구조는 무엇입니까? – Radek

답변

1

당신이 "id":"1" 섹션 그래서

{"topNode":{"data":"Item 1", 
      "children":[], 
      "state":"closed", 
      "id":"1", 
      "attributes":{"class":"editContainerL‌​ink","href":"#"} 
      } 
} 

그것이

{"topNode":{"data":"Item 1", 
      "children":[], 
      "state":"closed", 
      "id":"1", 
      "attributes":{"class":"editContainerL‌​ink", 
          "href":"#", 
          "id":"1" 
          } 
      } 
} 
+0

이 형식으로 변경 했는데도 여전히 ID가 채워지지 않습니다. { "topNode": { "데이터": "항목 1", "children": [], "상태": "닫힘", "속성": { "class": "editContainerL ink", " href ":"# ","id ":"1 "} } } –

+0

그래서 ID를 두 번 정의해야합니까? –

+1

속성 영역으로 이동하는 두 솔루션을 결합한 다음 ... "속성"을 "attr"로 변경하면 문제가 해결됩니다. ID는 이제 LI에 채워집니다. { "topNode"{ "데이터": "항목 1", "어린이"[] "상태": "폐쇄" "ATTR"{ "클래스": "editContainerL 잉크" "href": "#", "id": "1" } } } –

0

단지 변화 ATTR 속성과 아이디과 같을 것이다 속성을 이동해야하는 전화 'a'노드에 나타납니다. 나는 또한 'li'노드에서 이드를 원하지만 지금까지는 메타 데이터를 사용하는 시도가 성공적이지 않습니다. 에서

// the `metadata` property will be saved using the jQuery `data` function on the `li` node 
"metadata" : "a string, array, object, etc", 

: http://www.jstree.com/documentation/json_data