簡體   English   中英

帶有空文件夾的dijit.tree

[英]dijit.tree with empty folders

我創建了一個樹選擇,該樹選擇在下拉列表中顯示dijit.tree。 現在,我不希望用戶選擇一個文件夾,即使該文件夾為空。 用戶應該只能選擇末端節點或葉子。 dijit.tree將所有空文件夾視為葉子。 我如何進行排序?

您需要覆蓋_onClick或setSelected方法。 如果使用多父母模型ForestStoreModel,這將變得很復雜。

fiddle.net

嘗試這樣做,這僅適用於選擇多個false的情況:

    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}
        ]}
    ]
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM