0

我是 DOJO 1.6 的新手

我试图显示带有子文件夹的树。

dojo.require("dojo.data.ItemFileWriteStore");
            dojo.require("dijit.form.Button");
            dojo.require("dijit.tree.TreeStoreModel");
dojo.require("dojo.store.Memory");
dojo.require("dijit.Tree");
            dojo.addOnLoad(function() {
                 // Create test store, adding the getChildren() method required by ObjectStoreModel
        var data =  [ { id: 1, name: "answerTypeLabel",                 type:'scenario',    children:[{_reference: 2}]},
                       { id: 2, name: "acceptRequestLabel",             type:'paragraph',   data: "acceptRequestLabel"},
                       { id: 3, name: "rejectRequestLabel",             type:'scenario',    children:[{_reference: 5},{_reference: 6}]},
                       { id: 4, name: "MoreInformationLabel",       type:'scenario',    children:[{_reference: 7},{_reference: 8}]},
                       { id: 5, name: "rejectRequestStatusLabel",   type:'paragraph',   data: "rejectRequestStatusLabel"},
                       { id: 6, name: "rejectRequestNotCoveredLabel", type:'paragraph',     data: "rejectRequestNotCoveredLabel" },
                       { id: 7, name: "MoreInformationDocumentLabel", type:'paragraph',     data: "MoreInformationDocumentLabel"},
                       { id: 8, name: "MoreInformationDataLabel",   type:'paragraph',   data: "MoreInformationDataLabel"}
                     ];
         // Building the store object
        var sortableStore = new dojo.data.ItemFileWriteStore({
                    data: {
                        identifier: 'id',
                        label: 'name',
                        items: data 
                    },
                    });
        // building the model           
        var model = new dijit.tree.ForestStoreModel({

                    store: sortableStore, 
            query: { 
                id: "*" 
            }, 
            rootId: "root", 
            rootLabel: "sorting of tree"

        }); 
        // Building the tree            
        var tree = new dijit.Tree({

            model:model,
            'class': "tundra" 
        },
        "resourceTree");

            });

代码输出.

这里 Id 2 在 Id 1 的一个孩子中,所以在显示 Id 2 时必须在 Id 1 内。但这里 Id 2 出现在 id 1 内并且也在 id 1 的同一级别上。(所有所有孩子都有重复身份证)。这是 id 2,5,6,7,8 的情况。

我想删除重复。

输出应该像

正确的输出应该是这样的

4

1 回答 1

1

原因是您将非分层存储应用到树上,该树不应该显示将父项作为根的兄弟的项目。

要“修复”这个问题,引用的id 不需要.model query

在您的数据情况下,看起来type:'paragraph'应该是叶子。因此,将查询设置为匹配type:'scenario'而不是您当前的 ' id: "*" '

    var model = new dijit.tree.ForestStoreModel({

                store: sortableStore, 
        query: { 
            type:'scenario'
        }, 
        rootId: "root", 
        rootLabel: "sorting of tree"

    }); 
于 2012-10-03T17:51:28.957 回答