Я создал выбор дерева, который показывает dijit.tree в выпадающем списке. Теперь я не хочу, чтобы пользователь выбирал папку, даже если она пуста. Пользователь должен выбирать только конечные узлы или листья. dijit.tree обрабатывает все пустые папки как листья. как мне это отсортировать?dijit.tree с пустыми папками
0
A
ответ
1
Вам необходимо переопределить методы _onClick или setSelected. Это осложняется, если вы используете многопартийную модель ForestStoreModel.
См fiddle.net
Попробуйте сделать, как, например, это будет работать только для выбора множественным ложным:
getIconClass: function fileIconClass(item, nodeExpanded) {
var store = item._S,
get = function() {
return store.getValue(item, arguments[0]);
};
// scope: dijit.Tree
if (item.root || get("isDir")) {
if (!item || this.model.mayHaveChildren(item) || get("isDir")) {
return (nodeExpanded ? "dijitFolderOpened" : "dijitFolderClosed");
} else {
return "dijitLeaf";
}
} else {
return "dijitLeaf";
}
},
onClick: function(item, treeNode, e) {
var store = item._S,
get = function() {
return store.getValue(item, arguments[0]);
};
if (get("isDir")) this.set("selectedItems", []);
}
Адаптировать как вы считаете нужным, соответствие ваших данных JSON - в частности isDir, то выше работает на выборке json вот так:
{
identifier: 'id',
label: 'foo',
items: [
{
id: 'item1',
foo: 'file1',
isDir: false},
{
id: 'item2',
foo: 'emptyDir',
isDir: true},
{
id: 'item3',
foo: 'dir',
isDir: true,
children: [
{
id: 'item3_1',
foo: 'fileInDir',
isDir: false}
]}
]
}
Смежные вопросы
- 1. Удалить алгоритм с пустыми папками
- 2. dijit.Tree с dojo.store.JsonRest Удаление элементов
- 3. Обновление rootLabel dijit.Tree
- 4. Разбор узлов в dijit.tree
- 5. dijit.Tree from XML
- 6. dijit.Tree refresh and focusNode
- 7. Dojo - Dijit.Tree - Обновление дерева
- 8. Ищите пример dojo.store с dijit.Tree over REST
- 9. Расширение всех узлов в dijit.Tree
- 10. dijit.Tree set paths JsonRestStore + ForestStoreModel
- 11. Пакетное перемещение с папками
- 12. заполнять jList с папками?
- 13. вопрос с папками владельца
- 14. копировать файлы с папками
- 15. Xcopy Directory с папками
- 16. dijit.Tree: Handler expand/collapse event
- 17. libGDX не создает папки с папками и папками
- 18. Я создал установщик для MyProgram, но удаленный ярлык, который он создает, оставляет за пустыми папками.
- 19. Операции с папками и файлами
- 20. C# deploy, проблемы с папками
- 21. XCode - папка с папками, выделенными
- 22. .htaccess mod_rewrite с динамическими папками
- 23. Android Активы с дополнительными папками
- 24. Populate TreeView с непустыми папками
- 25. java unzipping файлы с папками
- 26. бродячие с несколькими папками sync'd
- 27. Java, опубликовать с локальными папками
- 28. bootgrid с пустыми полями
- 29. CTE с пустыми выражениями
- 30. ВПР с пустыми ячейками
еще одна вещь, которая меня беспокоит, заключается в том, что некоторые из моих папок могут быть пустыми. поэтому я не хочу, чтобы они были выбраны. Я думаю, что мой магазин должен быть настроен таким образом. у вас есть какие-то трюки? – MozenRath
только в коробке; я думаю, вам может потребоваться установить значение в папке, например '{path: '/ var/lib/modules /', isDir: true, isEmpty: true}', и в этом случае вы можете напрямую проверить 'if (! (isDir)) this.set ("selectedItems ..."); ' чтобы избежать выбора папок - и если ваша папка пуста, она также получит значок листа (из таблицы стилей). Затем в дереве вы можете переопределить функцию getIconClass и вернуть класс, соответствующий любой папке или листу (добавлен образец из моего собственного расширения dijit.Tree). – mschr
setselecteditems - неправильное место. Я не хочу, чтобы там был какой-либо выбор в папке – MozenRath