0

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

下一个代码:

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

不工作

这个:

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

作品!但前提是树的文件夹(父叶)已经打开。如果父文件夹关闭,它就不起作用。

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

PS这里是一个非常简单的例子:http: //jsfiddle.net/hjnx9/6/

我单击按钮并想选择树中的某个节点并滚动到它。第一次节点只会被选中(但滚动不起作用)。在第二次将再次选择节点并且这次滚动开始工作。怎么解决???

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

4

1 回答 1

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);        
      }
    );
于 2014-09-24T09:05:12.303 回答