我已經實施了一個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");
現在的問題是:當用戶再次打開該對話框,之前展開的類別仍顯示擴張。正因爲如此,樹的元素加載速度變慢。即使關閉瀏覽器窗口並再次打開,我仍然可以看到之前擴展的類別。我嘗試銷燬爲複選框創建的對象的引用,但問題仍然存在。
任何與此問題有關的指針將非常感激。
幫助正是如此。萬分感謝。 – 2014-10-10 03:40:25