1,需求
树结构展开和收起某个菜单,经过某个操作后需要刷新菜单,要求菜单刷新后的树结构跟上一次保持一致。
2,思路:设置一个变量,来存储树节点的展开节点的id,刷新树时,根据此变量来循环展开上一次展开的节点
3,代码
//初始化变量
this.treeName = 'zt'; //菜单树id
this.zTree; //展开节点变量
this.zTreeSelect; //选中的节点
展开收起方法
//展开节点
function onExpand(event, treeId, treeNode) {
var self = this;
// var cookie = $.cookie("z_tree" + window.location);
var z_tree = new Array();
if (self.zTree) {
z_tree = JSON.parse(self.zTree);
}
if ($.inArray(treeNode.id, z_tree) < 0) {
z_tree.push(treeNode.id);
}
self.zTree = JSON.stringify(z_tree);
// $.cookie("z_tree" + window.location, JSON.stringify(z_tree))
}
//收起节点
function onCollapse(event, treeId, treeNode) {
var self = this;
// var cookie = $.cookie("z_tree" + window.location);
var z_tree = new Array();
if (self.zTree) {
z_tree = JSON.parse(self.zTree);
}
var index = $.inArray(treeNode.id, z_tree);
z_tree.splice(index, 1);
for (var i = 0; i < treeNode.children.length; i++) {
index = $.inArray(treeNode.children[i].id, z_tree);
if (index > -1) z_tree.splice(index, 1);
}
self.zTree = JSON.stringify(z_tree);
// $.cookie("z_tree" + window.location, JSON.stringify(z_tree))
}
在刷新树菜单的方法中展开相应菜单
if (self.zTree) {
z_tree = JSON.parse(self.zTree);
for (var i = 0; i < z_tree.length; i++) {
var node = treeObj.getNodeByParam('id', z_tree[i]);
treeObj.expandNode(node, true, false); //展开相应节点
}
}
4,记住上一次选中的节点,同样的思路,在onclick方法中,给this.zTreeSelect变量赋值,然后在刷新树菜单方法中,选中
if (self.zTreeSelect) {
z_tree_select = self.zTreeSelect;
var node = treeObj.getNodeByParam('menuTitle', z_tree_select);
treeObj.selectNode(node); //选中节点
treeObj.setting.callback.onClick(null, z_tree_select, node);//调用点击事件
}