tags:

views:

38

answers:

1

I wrote the following code to create a dojo tree.

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");

Following is my JSON file structure :

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

I want to get all the nodes (basically their 'id' part)of specific 'type',lets say type= "ROOT". Is there anyway to get all those node? I thought of doing this using tree._itemNodeMap, but don't know any way to iterate through this whole item map,because it need a id as a input to return any specific node.

+1  A: 

If you're talking about obtaining the data items programatically, you can get them straight from the store using fetch.

Sample JSON for ItemFile*Store:

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

Sample code:

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));
        }
    });
});

This will log Sandwich, Ham, Cheese, and Banana.

Ken