2010-01-05 3 views
1

У меня есть dijit.Tree, который заполнен ItemFileReadStore с использованием JSON. Из-за нашей настройки мне нужно сделать новый запрос каждый раз, когда щелкнет узел дерева. Дерево использует файлы cookie, чтобы помнить, какие папки были расширены, а не, поэтому это не проблема. Но я пытаюсь установить фокус на узел, который был нажат.Получение узла додзе, когда у меня есть идентификатор магазина

мне удалось получить элемент из модели магазина, установив его идентификатор в качестве параметра в URL:

store.fetchItemByIdentity({identity:openNode, onItem:focusOpenNode(item)}); 
function focusOpenNode(item) { 
    //I've got the item, now how do I get the node so I can do: 
    var node = getNodeFromItem(item); //not a real method... 
    treeControl.focusNode(node); 
} 

, но я не могу показаться, чтобы найти способ, чтобы получить узел согласования с идентификатор элемента.

ответ

4

При создании treeControl, проходят в качестве одного из Params в конструктор параметров или использовать dojo.mixin добавить виджет-дерево:

/*tree helper function to get the tree node for a store item*/ 
getNodeFromItem: function (item) { 
    return this._itemNodesMap[item.name[0]]; 
} 

(Было бы аккуратнее использовать магазин этого дерева GetAttribute, чтобы получить имя элемента - но этот пример не полируется)

Тогда вы могли бы сделать:

function focusOpenNode(item) { 
    //I've got the item, now how do I get the node so I can do: 

    var node = treeControl.getNodeFromItem(item); //now a real method... 
    treeControl.focusNode(node); 
} 
+0

Sweeet! Мне жаль, что я не смогу дать вам несколько вариантов для этого. Работает как шарм. И хорошая идея поместить пользовательские функции в treeControl, помогает немного очистить код. – peirix

0

Великий ответ, я видел это сделано различными способами, но Тхи. s является самым простым (и лучшим).

Мне пришлось немного изменить его из-за того, как я использую элемент управления.

Вместо this._itemNodesMap[item.name[0]], я использую this._itemNodesMap[item.id]

Смежные вопросы