Extjs 我有嵌套的json,如何编写模型和存储??森查触摸2
我已经像上面那样嵌套了json,我对如何编写存储根属性和模型字段感到非常困惑。有人能帮我一下吗 我试着给rootProperty:content赋值,但它不起作用Extjs 我有嵌套的json,如何编写模型和存储??森查触摸2,extjs,sencha-touch-2,Extjs,Sencha Touch 2,我已经像上面那样嵌套了json,我对如何编写存储根属性和模型字段感到非常困惑。有人能帮我一下吗 我试着给rootProperty:content赋值,但它不起作用 我想将视图中的数据调用为{ups_ground.amount}这有效吗 您能将服务器结构更改为标准的extjson存储格式吗?如果是这样,您的店铺设置将非常简单: "content":{"ups_ground": {"amount":"7.06", "currency_
我想将视图中的数据调用为{ups_ground.amount}这有效吗 您能将服务器结构更改为标准的extjson存储格式吗?如果是这样,您的店铺设置将非常简单:
"content":{"ups_ground":
{"amount":"7.06",
"currency_code":"USD",
"data":[],
"tnt":"Monday, 7\/15 at 11:00pm"},
"ups_next_day_air_saver":
{"amount":"26.44",
"currency_code":"USD",
"data":[],
"tnt":"Monday, 7\/15 at 3:00pm"},
"ups_next_day_early_a.m.":
{"amount":"63.84",
"currency_code":"USD",
"data":[],
"tnt":"Monday, 7\/15 at 8:30am"},
"ups_next_day_air":
{"amount":"30.99",
"currency_code":"USD",
"data":[],"tnt":
"Monday, 7\/15 at 10:30am"}
}
}
您可以这样声明模型和存储:
{
"content":[
{
"shipping_type":"ups_ground",
"amount":"7.06",
"currency_code":"USD",
"data":[],
"tnt":"Monday, 7\/15 at 11:00pm"
},
{
"shipping_type":"ups_next_day_air_saver",
"amount":"26.44",
"currency_code":"USD",
"data":[],
"tnt":"Monday, 7\/15 at 3:00pm"
},
{
"shipping_type":"ups_next_day_early_a.m.",
"amount":"63.84",
"currency_code":"USD",
"data":[],
"tnt":"Monday, 7\/15 at 8:30am"
},
{
"shipping_type":"ups_next_day_air",
"amount":"30.99",
"currency_code":"USD",
"data":[],"tnt":
"Monday, 7\/15 at 10:30am"
}
]
}
Ext.define("ShippingModel", {
extend: "Ext.data.Model",
fields: [
{name:"shipping_type", type:"string"},
{name:"amount", type:"float"},
{name:"currency_code", type:"string"},
{name:"data", type:"string"},
{name:"tnt", type:"string"}//this may need to be a date, lookup date format for this yourself
]
});
Ext.create('Ext.data.Store', {
model: 'ShippingModel',
controller: 'news',
proxy: {
type: 'ajax',
url: 'your url',
reader: {
type: 'json',
root: 'content'
},
extraParams:{
action:'getShippingRates'//you may not need the extraParams, just putting here for example
}
},
autoLoad: true
});
如果不能这样做,可以扩展reader类来读取自定义数据结构。它看起来像这样:
{
"content":[
{
"shipping_type":"ups_ground",
"amount":"7.06",
"currency_code":"USD",
"data":[],
"tnt":"Monday, 7\/15 at 11:00pm"
},
{
"shipping_type":"ups_next_day_air_saver",
"amount":"26.44",
"currency_code":"USD",
"data":[],
"tnt":"Monday, 7\/15 at 3:00pm"
},
{
"shipping_type":"ups_next_day_early_a.m.",
"amount":"63.84",
"currency_code":"USD",
"data":[],
"tnt":"Monday, 7\/15 at 8:30am"
},
{
"shipping_type":"ups_next_day_air",
"amount":"30.99",
"currency_code":"USD",
"data":[],"tnt":
"Monday, 7\/15 at 10:30am"
}
]
}
Ext.define("ShippingModel", {
extend: "Ext.data.Model",
fields: [
{name:"shipping_type", type:"string"},
{name:"amount", type:"float"},
{name:"currency_code", type:"string"},
{name:"data", type:"string"},
{name:"tnt", type:"string"}//this may need to be a date, lookup date format for this yourself
]
});
Ext.create('Ext.data.Store', {
model: 'ShippingModel',
controller: 'news',
proxy: {
type: 'ajax',
url: 'your url',
reader: {
type: 'json',
root: 'content'
},
extraParams:{
action:'getShippingRates'//you may not need the extraParams, just putting here for example
}
},
autoLoad: true
});
然后将代理中的reader type属性设置为“MyWeirdlystucuredDataReader”
*这段代码都没有经过测试,即使它不起作用,也应该让您知道该怎么做