懒加载树
Source
Output
QRCode
<!doctype html>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-touch-fullscreen" content="yes">
<title>懒加载树</title>
<link rel="stylesheet" type="text/css" href="//g.alicdn.com/kissy/k/5.0.1/css/base.css">
<link rel="stylesheet" type="text/css" href="//g.alicdn.com/kissy/k/5.0.1/button/assets/dpl.css">
<link rel="stylesheet" type="text/css" href="//g.alicdn.com/kissy/k/5.0.1/tree/assets/dpl.css">
<script type="text/javascript" src="//g.alicdn.com/kissy/k/5.0.1/seed-debug.js"></script>
</head>
<body>
<div style="width:90%;margin:0 auto;">
<h1>懒加载树</h1>
<p>首次渲染时只渲染根节点,点击展开时再去“加载”数据并渲染子树</p>
<div id="treeContainer" style="width: 200px;margin: 20px 0;">
</div>
</div>
<script type="text/javascript">
require(['tree', 'node', 'util'], function (Tree, $, util) {
var data = { //在这个示例使用的是模拟的本地数据,当树结构比较大的时候可以用ajax去服务器拉取数据“懒加载”
content: "淘宝网",
children: [
{
content: "收藏夹",
children: [
{
content: "收藏的宝贝"
},
{
content: "收藏的店铺"
}
]
},
{
content: "我的淘宝",
children: [
{
content: "已买到的宝贝"
},
{
content: "已卖出的宝贝"
}
]
}
]
};
function getNode(node, content) {
if (node.content == content) {
return node;
}
var c = node.children || [];
for (var i = 0; i < c.length; i++) {
var t = getNode(c[i], content);
if (t) {
return t;
}
}
return null;
}
var tree = new Tree({
content: "淘宝网",
isLeaf: false,
// showRootNode:false,
render: "#treeContainer"
});
tree.on("expand", function (e) { //点击展开再去把子树节点加载渲染
var node = e.target;
if (!node.get('children').length) {
var c = getNode(data, node.get("content")).children;
util.each(c, function (v) {
node.addChild(new Tree.Node({
isLeaf: !(v.children && v.children.length),
content: v.content
}));
});
}
});
tree.render();
});
</script>
</body>
</html>