Пример реализации операции «перетащил и бросил» в дереве

Эти методы являются настолько общими, что они могут передаваться диджиту Tree на этапе конструирования, что особенно замечательно, так как позволяет максимально использовать существующую реализацию в dijit._tree. Теперь настало время для еще одного примера.

Возьмем за основу пример 15.9 и дополним его возможностью перемещать элементы дерева мышью. Чтобы минимизировать прилагаемые для этого усилия, будем опираться на шаблонную реализацию dijit._tree. Кроме того, обратите внимание, что нам придется отказаться от механизма ItemFileReadStore и задействовать ItemFileWriteStore, так как сама природа операции перетаскивания не предполагает доступ только для чтения.

Чтобы пример не противоречил здравому смыслу, нам необходимо предотвратить возможность сброса элементов на другие элементы, так как элементы по своей сути отличаются от категорий элементов, как мы их определили в уже описанном ранее хранилище dojo.data. Реализация приводится в примере 15.11.
Пример 15.11. Простое дерево с возможностью перетаскивания элементов


Drag and Droppable Tree Fun!
href="http://o.aolcdn.com/dojo/1.1/dojo/resources/dojo.css" />
href="http://o.aolcdn.com/dojo/1.1/dijit/themes/tundra/tundra.css" />
type="text/javascript"
src="http://o.aolcdn.com/dojo/1.1/dojo/dojo.xd.js"
djConfig="parseOnLoad:true,isDebug:true">


(body class="tundra")
url="./programmingLanguages.json">

store="dataStore" query="{type:'category'}" rootId="root"
rootLabel="Programming Languages">

dndController="dijit._tree.dndSource">

(/body)


Когда у вас появится потребность реализовать возможность перетаскивания элементов внутри диджита Tree, стоит потратить некоторое время на изучение шаблонной реализации в dijit._tree.


Любой случай применения механизма перетаскивания обычно имеет свои особенности, поэтому вероятность найти готовое решение, не требующее приложения дополнительных усилий, близка к нулю..



Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Dojo на эту тему:
ColorPalette
Dialog
Editor
InlineEditBox
Menu

Вернуться в раздел: Dojo / Виджеты приложения