所以我試圖加載從Web服務接收到一個煎茶觸摸2存儲中的數據。 數據嵌套JSON,但它包含多個dataArrays。如何將多維/嵌套json加載到商店中?
我與煎茶觸摸2.3.1,一定程度上等於Ext JS的4.2工作。我還沒有那麼多sencha的經驗,但我到了那裏。我決定去MVC,所以我希望答案儘可能接近這個:)。
這是JSON我使用的例子:
[
{
"DataCollection": {
"DataArrayOne": [
{
"Name": "John Smith",
"Age": "19"
},
{
"Name": "Bart Smith",
"Age": "16"
}
],
"DataArrayTwo": [
{
"Date": "20110601",
"Product": "Apple",
"Descr": "",
"Remark": ""
},
{
"Date": "20110601",
"Product": "Orange",
"Descr": "",
"Remark": ""
},
{
"Date": "20110601",
"Product": "Pear",
"Descr": "",
"Remark": ""
}
],
"DataArrayThree": [
{
"SomeTotalCost": "400,50",
"IntrestPercentage": "3"
}
]
}
}
]
只通過一個電話,我得到這個JSON。我不想造成任何不必要的流量,所以我希望能夠以某種方式使用這些數據。 我希望能夠獨立使用每個DataArray。
得到的數據通過代理髮送到商店:
Ext.define("MyApp.store.myDataObjects", {
extend: "Ext.data.Store",
config: {
model: "MyApp.model.myDataObject",
proxy: {
reader: {
type: "json",
rootProperty: "DataCollection"
},
type: "ajax",
api: {
read: "https://localhost/Service.svc/json"
},
limitParam: false,
startParam: false,
pageParam: false,
extraParams: {
id: "",
token: "",
filter: ""
},
writer: {
encodeRequest: true,
type: "json"
}
}
}
});
我有點堅持與這裏的模型。我嘗試使用看起來像這樣的映射:
config: {
fields: [ {
name: "IntrestPercentage",
mapping: "Calculation.IntrestPercentage",
type: "string"
}
]}
我嘗試過關聯,但無濟於事。
據谷歌瀏覽器的控制檯,它沒有包含數據的任何對象。我只有1個對象的所有值爲「null」。
我endgoal是能夠顯示每個dataArray中的一個單獨的表。所以DataArrayOne的一張表,DatarrayTwo的一張表......數據本身沒有鏈接。他們只是必須在視圖上顯示的細節。 約翰史密斯與蘋果無關,因爲他沒有購買。蘋果就在那裏作爲一個項目來顯示。
由於他們是過時的可能的解決方案我見過的不理解是:
- ChildStores:您有接收數據的主存儲,然後 您可以根據分割數據到其他商店到rootProperty。我有 不知道如何做到這一點,但我不知道它是否會在 所有。
- 協會,以防我做錯了。我不認爲他們 是必要的,因爲數據沒有相互鏈接,但它是「DataCollection」的 的一部分。
有人可以發表一個關於如何處理這種不尋常的(?)類嵌套json的例子。或者任何其他能夠導致能夠隨意使用3個數據陣列的解決方案。
在此先感謝
答案已經給出。但是,更有建設性的解決方案是受歡迎的一個更有趣的事情是看到像Saki的答案在一個代理商店的例子中結合起來。 – meru