2015-08-14 41 views
0

我試圖以編程方式從json文件創建dojo樹。問題在於我的json對象引用他們的父母而不是像一些例子中的孩子。 不幸的是我的輸出看起來只像這樣:基於ItemFileReadStore和父類型的Dojo Tree

enter image description here

我已經JavaScript代碼如下:

<script type="text/javascript"> 
require(["dijit/Tree", "dojo/data/ItemFileReadStore", "dijit/tree/ForestStoreModel", "dijit/tree/ObjectStoreModel", "dojo/domReady!"], 
    function(Tree, ItemFileReadStore, ObjectStoreModel, ForestStoreModel){ 
var store = new ItemFileReadStore({ 
    url: "/_data/test.json", 
    getChildren: function(object){ 
     return this.query({F_TopLevelCategoryID: object.P_CategoryID}); 
    } 
}); 

var myModel = new ObjectStoreModel({ 
    store: store, 
    labelAttr:'CategoryName', 
    query: {"P_CategoryID": 0} 
}); 

var myTree = new Tree({ 
    model: myModel 
}, "treeOne"); 
myTree.startup(); 
}); 
</script> 

JSON文件如下所示:

{ "identifier" : "P_CategoryID", 
    "label" : "CategoryName", 
"items" : [ { "CategoryName" : "Category 1", 
    "F_TopLevelCategoryID" : 0, 
    "P_CategoryID" : 1 
    }, 
    { "CategoryName" : "Category 2", 
    "F_TopLevelCategoryID" : 1, 
    "P_CategoryID" : 2 
    }, 
    { "CategoryName" : "Category 3", 
    "F_TopLevelCategoryID" : 1, 
    "P_CategoryID" : 3 
    }, 
    { "CategoryName" : "Category 4", 
    "F_TopLevelCategoryID" : 1, 
    "P_CategoryID" : 4 
    }, 
    { "CategoryName" : "Category 5", 
    "F_TopLevelCategoryID" : 3, 
    "P_CategoryID" : 5 
    }, 
    { "CategoryName" : "Category 6", 
    "F_TopLevelCategoryID" : 4, 
    "P_CategoryID" : 6 
    }, 
    { "CategoryName" : "Category 7", 
    "F_TopLevelCategoryID" : 4, 
    "P_CategoryID" : 7 
    }, 
    { "CategoryName" : "Category 8", 
    "F_TopLevelCategoryID" : 0, 
    "P_CategoryID" : 8 
    }, 
    { "CategoryName" : "Top Level Category", 
    "P_CategoryID" : 0 
    } 
] 
} 

在哪裏問題?

回答

1

我相信這是一種僥倖,你收到了部分結果。

你在require塊中調換了forestStoreModel和objectStoreModel,並且引用父類很好!

此外,使用dojo/store代替ItemFileReadStore,因爲後者已被棄用。使用上內存中的數據參數:

var store = new Memory({ 
    data: testJson, 
    getChildren: ... 
}); 

看到我工作的小提琴,用道場/存儲/內存:https://jsfiddle.net/yubp45sa/

可以使用道場/請求讓您的數據存儲到存儲店:

request("testData.json").then(...); 

http://dojotoolkit.org/reference-guide/1.10/dojo/request.html

我在另一個請求例如先前,它通過一個GET請求從自定義的NodeJS ROU的數據te(返回JSON):

request.get("/configInfo", { 
    handleAs: "json" 
}).then(...); 
+0

這個作品很有魅力,非常感謝! 我已經有了一個工作片段,內存存儲就緒,並且可以添加請求函數以從URL中檢索數據。 :) – gotcha

+0

@gotcha很高興它爲你工作! – Tom