服务端传到前段一个树状目录某一个目录id,如何显示这个目录勾选,顺带这个目录的所有下级也勾选呢。
笨办法是服务端根据这个id,取出所有子孙id,到前端来选择。问题是,treeview没有这个功能:根据id来获取这个node。
view的很多方法都是对node或nodes进行操作,那么这个node或nodes如何来呢?你自己根据服务端传过来的id、text等定义一个node是不行的,比如:
var Nodes = [{
text: '广州北江引水(水源)工程',
id:1,
code:'SL1204'
}];
$('#tree').treeview('toggleNodeChecked', [ Nodes, { silent: true } ]);找来找去,唯一能获得node的办法就是findnode方法,开始犯了个错误,这个findnode是根据正则过滤从而查找出来符合条件的node,也就是说,不是唯一的结果,类似模糊查询。它说明里说要精确查询,需要如何如何。看下列正确代码:
for(var i=0;i<data.length;i++){
var findCheckableNodess = function() {
return $('#tree').treeview('findNodes', ['^'+data[i]+'$', 'id']);
};
var checkableNodes = findCheckableNodess();
$('#tree').treeview('toggleNodeChecked', [ checkableNodes, { silent: true } ]);
}'^'+data[i]+'$'——这个就是哪个精确查找的方式了,根据id得到这个node ,然后用toggleNodeChecked方法,就能将这个节点和其所有子孙勾选了。