所以我试图加载从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