在测试树形列表的异步加载时,发现一个问题,先贴源码,如下:
BUI.use(['bui/tree','bui/data'], function (Tree, Data) {
var store = new Data.TreeStore({
url: 'WebService/Handler_OrgStructure.ashx?action=default&IsShow=1',
autoload:true
});
var tree = new Tree.TreeList({
render: '#t1',
showLine: true,
height: 300,
store: store,
showRoot: true //不加上的话 节点都不显示 加上的话 会显示一个无用的根节点,原因是把autoLoad写成了autoload
});
tree.render();
tree.on('itemclick', function (ev) {
var item = ev.item;
$('.log').text(item.text);
});
});
在上面的代码,看了几遍都感觉没有问题,但就是在TreeList中showRoot: true这个属性有些问题,不加这个属性的话,节点内容都没有显示,加上的话会自动添加一个空的根节点,再把原有内容追加到这个根节点下面。
于是想着看是不是数据有问题,就换了另外一种方法,如下:
BUI.use(['bui/tree'], function (Tree) {
$.getJSON('WebService/Handler_OrgStructure.ashx?action=default&IsShow=1', function (data) {
var tree = new Tree.TreeList({
render: '#t1',
nodes: data,
showLine: true,
height: getHeight(0.5)
});
tree.render();
tree.on('itemclick', function (ev) {
var item = ev.item;
$('.log').text(item.text);
});
});
});
这种方法是可以的,那就说明上面的也是没有问题的,肯定是哪里设置出问题了,慢慢比对后发现是因为属性autoLoad写成了autoload所以才会出错(只能怪自己太粗心。。o(╯□╰)o)。此时showRoot: true加与不加效果都一样,直接去掉即可。