2015-02-10 7 views
3

Кто-то пробовал это уже, я имею в виду, что кто-то сделал уже сторонний/расширений или патч для этого? Объект ajax XHR поддерживает чтение данных XML, но, думаю, Fancytree потребует изменений или расширений для поддержки этого формата?Использование данных XML вместо данных JSON в Fancytree

ответ

2

Вы можете анализировать и преобразовывать XML-ответ в событии postProcess.

Для примера, предполагая, что этот формат XML:

<children> 
    <node> 
     <title> Node 1</title> 
    </node> 
    <node folder="true" expanded="true" key="42"> 
     <title> Node 2 (expanded folder)</title> 
     <children> 
      <node> 
       <title> Node 2.1</title> 
      </node> 
      <node> 
       <title> Node 2.2</title> 
      </node> 
     </children> 
    </node> 
</children> 

Дерево может преобразовать Аякса ответов вроде так:

$("#tree").fancytree({ 
    source: { url: "ajax-tree.xml", dataType: "xml" }, 
    lazyLoad: function(event, data) { 
     data.result = { url: "ajax-sub.xml", dataType: "xml" }; 
    }, 
    postProcess: function(event, data) { 
     // Convert the xml responses to a Fancytree NodeData list. 
     // data.response is a `#document` root, so we get the outer 
     // `<children>` element: 
     data.result = parseFancytreeXml($(">children", data.response)); 
    } 
}); 

Наконец недостающее формат образца преобразователя:

/** Return a list of NodeData objects, assuming $xml points to a list of nodes. 
*/ 
function parseFancytreeXml($xml) { 
    var children = []; 

    $xml.children("node").each(function() { 
     var $node = $(this), 
      subnodes = $node.children("children"); 

     // Create Fancytree NodeData object from <node> element 
     children.push({ 
      title: $node.children("title").text(), 
      expanded: $node.attr("expanded"), 
      folder: $node.attr("folder"), 
      key: $node.attr("key"), 
      lazy: $node.attr("lazy"), 
      children: subnodes.length ? parseFancytreeXml(subnodes) : null 
     }); 
    }); 
    return children; 
} 
+0

Круто, выглядит очень хорошо! Я попробую. Большое спасибо! – BitWalker

 Смежные вопросы

  • Нет связанных вопросов^_^