dijit.Tree没有崩溃时重新加载
问题描述:
我已经实施了一个dijit树与复选框按照http://jsfiddle.net/5QcFY/14/提供的实施,这是工作得很好。我在对话框中显示树。有“类别”作为父节点,“类型”作为子节点。最初,所有父节点都显示为折叠状态。一旦用户从树中的子节点选择选项并关闭对话框,选定的项目将传递给进一步的处理逻辑。dijit.Tree没有崩溃时重新加载
下面是我的实现:
typeTreeHandle = new dijit.Tree({
store: dataStore,
id: "docTree",
showRoot: false,
autoExpand: false,
_createTreeNode: function(args) {
var tnode = new dijit._TreeNode(args);
tnode.labelNode.innerHTML = args.label;
//As parent nodes don't need checkboxes
if (!args.isExpandable)
{
var cb = new dijit.form.CheckBox();
cb.set('checked', false);
cb.placeAt(tnode.labelNode, "first");
//To store reference of checkbox object to destroy afterwards.
checkBoxArr.push(cb);
dojo.connect(cb, "onChange", function() {
var treeNode = dijit.getEnclosingWidget(this.domNode.parentNode);
dojo.publish("/checkbox/clicked", [{
"checkbox": this,
"item": treeNode.item}]);
});
}
return tnode;
}
}, "myTree");
现在的问题是:当用户再次打开该对话框,之前展开的类别仍显示扩张。正因为如此,树的元素加载速度变慢。即使关闭浏览器窗口并再次打开,我仍然可以看到之前扩展的类别。我尝试销毁为复选框创建的对象的引用,但问题仍然存在。
任何与此问题有关的指针将非常感激。
答
的persist
属性是你在找什么,似乎:
启用/禁用使用Cookie状态保存的。
默认情况下,树会记住哪些分支被打开/关闭。至 使用此功能,您必须为树指定一个ID。要禁用 功能,请将“persist”参数设置为false。
http://dojotoolkit.org/reference-guide/1.10/dijit/Tree.html#persistence
有点混乱,在API docs有以下说关于autoExpand
属性(我看你已经尝试过):
完全展开负荷树。覆盖持续。
看起来这只适用于autoExpand: true
。正如您所见,使用persist: true
(这是默认设置)也会覆盖autoExpand: false
。
帮助正是如此。万分感谢。 – 2014-10-10 03:40:25