dijit.Tree设置路径并滚动到所选节点

时间:2013-11-06 13:01:44

标签: javascript dojo dijit.tree

实际上我被卡住了。 我正在尝试在dojo树中选择节点并立即滚动到它。但我不明白如何实现这一点。

下一个代码:

this.set("path", ["root", "folder", "file"]);
this.focusNode(this.selectedNode.id);

无效

这一个:

this.set("path", ["root", "folder", "file"]);
win.scrollIntoView(this.selectedNode.id);

作品!但仅当树的文件夹(父叶)已经打开时。如果关闭父文件夹,它将无法正常工作。

所以......有人能帮助我吗?

P.S。这是一个非常简单的例子: http://jsfiddle.net/hjnx9/6/

我点击按钮,想要在树中选择一个节点并滚动到它。 首次选择节点时(但滚动不起作用)。在第二次时,将再次选择节点,这次滚动将继续工作。 如何修复???

P.S.S。我认为问题是set(“path”,...)不能立即打开树的文件夹(动画大约需要200毫秒)。那么我可能需要某种回调吗?

1 个答案:

答案 0 :(得分:2)

set("paths", ...)会返回一个Promise,因此,您的问题可以通过以下方式解决:

    //select node
    _Tree.set("path", ["root", "folder49", "file25_folder49"]).then(
      function(path) {
        // executes when set("path", ..) is complete
        var item = _Tree.model.store.data[2526];
        _Tree.onClick(item);        
      }
    );