dijit.Tree установить путь и прокрутить до выбранного узла

На самом деле я застрял. Я пытаюсь выбрать узел в дереве додзё и сразу перейти к нему. Но я не понимаю, как это реализовать.

следующий код:

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 Я думаю, что проблема в том, что набор ("путь",...) открывает папку дерева не сразу (анимация занимает около 200 мс). Так может мне нужен какой-то обратный звонок?

1 ответ

Решение

set("paths", ...) возвращает обещание, поэтому ваша проблема может быть решена следующим образом:

    //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);        
      }
    );
Другие вопросы по тегам