Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Extjs 我有嵌套的json,如何编写模型和存储??森查触摸2_Extjs_Sencha Touch 2 - Fatal编程技术网

Extjs 我有嵌套的json,如何编写模型和存储??森查触摸2

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_

我已经像上面那样嵌套了json,我对如何编写存储根属性和模型字段感到非常困惑。有人能帮我一下吗

我试着给rootProperty:content赋值,但它不起作用


我想将视图中的数据调用为{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”

*这段代码都没有经过测试,即使它不起作用,也应该让您知道该怎么做