3
有人試過這個,我的意思是有人爲此已經爲第三方/擴展或補丁? ajax XHR對象支持讀取XML數據,但我猜Fancytree需要一些更改或擴展來支持這種格式?在Fancytree中使用XML數據而不是JSON數據
有人試過這個,我的意思是有人爲此已經爲第三方/擴展或補丁? ajax XHR對象支持讀取XML數據,但我猜Fancytree需要一些更改或擴展來支持這種格式?在Fancytree中使用XML數據而不是JSON數據
您可以在postProcess
事件中解析和轉換XML響應。
舉個例子,假設這個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>
樹可以轉換,像這樣的Ajax響應:
$("#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;
}
很酷,看起來非常好!我會試試這個。多謝! – BitWalker 2015-02-12 16:18:53