dojo如何获取特定类型的所有树节点?

dojo如何获取特定类型的所有树节点?,dojo,Dojo,我编写了以下代码来创建dojo树 store = new dojo.data.ItemFileWriteStore({url: link}); treeModel = new dijit.tree.TreeStoreModel({ store: store, qu

我编写了以下代码来创建dojo树

store = new dojo.data.ItemFileWriteStore({url: link});
                              treeModel = new dijit.tree.TreeStoreModel({
                                            store: store,
                                            query: {
                                                    "type": "ROOT"
                                                    },
                                            rootId: "newRoot",
                                            childrenAttrs: ["children"]
                                        });

                              tree= new dijit.Tree({model: treeModel},"treeOne");
以下是我的JSON文件结构:

{
   identifier: "id",
   label: "name",
   items: [
   {id: "ROOT",name: "Change Windows",type: "ROOT"},
   ]}

我想获得特定“类型”的所有节点(基本上是它们的“id”部分),比如type=“ROOT”。是否仍有获取所有这些节点的方法?我曾想过使用tree来实现这一点。_itemNodeMap,但不知道如何迭代整个项映射,因为它需要一个id作为输入来返回任何特定节点。

如果您谈论的是以编程方式获取数据项,则可以使用
fetch
直接从存储中获取它们

ItemFile*存储区的JSON示例:

{
    "identifier": "id",
    "label": "name",
    "items": [{
        "id": "ROOT",
        "name": "Root",
        "type": "ROOT",
        "children": [{
            "id": "P1",
            "name": "StackExchange",
            "type": "website",
            "children": [{
                "id": "C1",
                "name": "StackOverflow",
                "type": "website"
            },
            {
                "id": "C2",
                "name": "ServerFault",
                "type": "website"
            }]
        },
        {
            "id": "P2",
            "name": "Sandwich",
            "type": "food",
            "children": [{
                "id": "C3",
                "name": "Ham",
                "type": "food"
            },
            {
                "id": "C4",
                "name": "Cheese",
                "type": "food"
            }]
        },
        {
            "id": "P3",
            "name": "Potluck",
            "type": "mixed",
            "children": [{
                "id": "C5",
                "name": "Google",
                "type": "website"
            },
            {
                "id": "C6",
                "name": "Banana",
                "type": "food"
            }]
        }]
    }]
}
示例代码:

dojo.require('dojo.data.ItemFileReadStore');

dojo.ready(function() {
    var store = new dojo.data.ItemFileReadStore({
        url: 'so-data.json'
    });
    store.fetch({
        query: {
            type: 'food'
        },
        queryOptions: {
            deep: true
        },
        onItem: function(item) {
            console.log(store.getLabel(item));
        }
    });
});

这将记录三明治、火腿、奶酪和香蕉。

如果您谈论的是通过编程方式获取数据项,您可以使用
fetch
直接从商店获取它们

ItemFile*存储区的JSON示例:

{
    "identifier": "id",
    "label": "name",
    "items": [{
        "id": "ROOT",
        "name": "Root",
        "type": "ROOT",
        "children": [{
            "id": "P1",
            "name": "StackExchange",
            "type": "website",
            "children": [{
                "id": "C1",
                "name": "StackOverflow",
                "type": "website"
            },
            {
                "id": "C2",
                "name": "ServerFault",
                "type": "website"
            }]
        },
        {
            "id": "P2",
            "name": "Sandwich",
            "type": "food",
            "children": [{
                "id": "C3",
                "name": "Ham",
                "type": "food"
            },
            {
                "id": "C4",
                "name": "Cheese",
                "type": "food"
            }]
        },
        {
            "id": "P3",
            "name": "Potluck",
            "type": "mixed",
            "children": [{
                "id": "C5",
                "name": "Google",
                "type": "website"
            },
            {
                "id": "C6",
                "name": "Banana",
                "type": "food"
            }]
        }]
    }]
}
示例代码:

dojo.require('dojo.data.ItemFileReadStore');

dojo.ready(function() {
    var store = new dojo.data.ItemFileReadStore({
        url: 'so-data.json'
    });
    store.fetch({
        query: {
            type: 'food'
        },
        queryOptions: {
            deep: true
        },
        onItem: function(item) {
            console.log(store.getLabel(item));
        }
    });
});
这将是原木三明治、火腿、奶酪和香蕉