Новый виджет дерева в Oracle APEX 5.0

Как я могу сослаться на выбранный элемент в новом виджете APEX 5 treeView?

Вот что я обнаружил :случайно:

`$(‘#MYTREE_1′).treeView(‘getSelection’).text()`

дает мне выбранный текст узла.

Есть ли другие способы?

Я пытался заставить работать методы getLevelFromNode и getIdFromNode, но безуспешно.

Любая помощь будет оценена по достоинству. С уважением, Эндрю


person Andrew    schedule 15.05.2015    source источник
comment
Как вы узнали, что вам нужно передать 'getSelection' в качестве параметра для treeView? Я изо всех сил пытаюсь найти какую-либо документацию по treeView и не знаю, основана ли она на сторонней библиотеке jQuery или на том, что создал Oracle.   -  person Drumbeg    schedule 18.05.2015
comment
Я не понимаю, вы успешно получили ссылку на выбранный узел, но этого недостаточно?   -  person Typo    schedule 18.05.2015
comment
Я сомневаюсь, что text() однозначно идентифицирует узел.   -  person Drumbeg    schedule 18.05.2015
comment
@Drumbeg treeView('getSelection') делает.   -  person Typo    schedule 18.05.2015
comment
Да, поэтому я предполагаю, что OP должен знать, как можно использовать объект узла treeView для определения идентификатора, уровня или какого-либо уникального идентификатора.   -  person Drumbeg    schedule 18.05.2015
comment
@Drumbeg, ты правильно догадываешься   -  person Typo    schedule 18.05.2015
comment
@Drumbeg Нет реальной документации по виджету дерева. Единственная документация — это неминифицированный файл виджета. Это довольно много кода для понимания. И это точно продукт Oracle, это их собственная реализация.   -  person Tom    schedule 20.05.2015
comment
Барабанщик, я обнаружил treeView('getSelection') случайно, время от времени.   -  person Andrew    schedule 20.05.2015


Ответы (1)


Из файла javascript:

/**
 * getSelection
 * Returns the set of tree nodes currently selected. If there is no selection the empty set is returned.
 * The elements returned have the class a-TreeView-content.
 * @return {*} jQuery object with the set of selected tree nodes
 */

/**
 * getSelectedNodes
 * Returns the data model nodes corresponding to the currently selected tree nodes.
 * @return {Array} array of data model nodes
 */

Используйте apex.jQuery(‘#MYTREE_1′).treeView("getSelection") для получения узлов DOM выбранных в данный момент узлов.
Используйте apex.jQuery(‘#MYTREE_1′).treeView("getSelectedNodes") для получения узлов данных выбранных в данный момент узлов.

И не так уж много можно получить. Единственная релевантная информация об узле — это идентификатор и метка, поскольку это единственная информация, предоставляемая модели данных. Не существует встроенного доступного метода для получения уровня глубины.

И getLevelFromNode, и getIdFromNode являются частными функциями и не раскрываются, они внутренние.

person Tom    schedule 20.05.2015
comment
Похоже, что apex.jQuery(‘#MYTREE_1′).treeView("getSelectedNodes")[0].id можно использовать для получения идентификатора выбранного узла. - person Drumbeg; 20.05.2015
comment
Привет, Драмбег, да, (‘#MYTREE_1′).treeView("getSelectedNodes")[0].id работает. Также $((‘#MYTREE_1′).treeView("getSelectedNodes")).attr('id') работает. А также (‘#MYTREE_1′).treeView("getSelectedNodes")[0].label и $((‘#MYTREE_1′).treeView("getSelectedNodes")).attr('label') . Хм, getLevelFromNode не является публичным? Придется еще раз прочитать исходный код. Я был уверен, что это публично. - person Andrew; 20.05.2015
comment
@ Эндрю, ты можешь выполнить простой поиск в исходном коде. Это просто функция удобства в анонимной функции. Его аргументы явно предназначены для внутреннего использования. Вы также можете увидеть доступные функции виджета, просмотрев apex.jQuery.apex.treeView._proto. - person Tom; 21.05.2015
comment
@Andrew, кроме того, нет причин заключать возврат для getSelectedNodes в объект jQuery. Зачем ты это сделал? Возврат datanode — это простой и чистый объект, нет необходимости делать его объектом jQuery и использовать для него атрибут attr. Кроме того, подумайте, как можно настроить дерево для множественного выбора. Не нужно скрывать это от себя. - person Tom; 21.05.2015