从嵌套的json中读取数据

时间:2012-02-15 14:19:38

标签: extjs4

与我以前的帖子相同。这是我从服务器上获得的改变的json。

{"property":[{"@length":"10","@mandatory":"true","@type":"String","@label":"Description","@id":"desc"},{"@mandatory":"false","@type":"Number","@label":"Code","@id":"code"},{"@mandatory":"true","@type":"Boolean","@label":"Check","@id":"check"},{"@mandatory":"true","@type":"DateField","@label":"Date","@id":"date"},{"@mandatory":"true","@type":"List","@label":"Types","@id":"types","options":[{"@value":"eee"},{"@value":"fff"}]}]}

我想在组合框中渲染Types的options数组。这是模型。

Ext.define('Property', {

        extend : 'Ext.data.Model',

        fields : [ {
            name : 'id',
            mapping : '@id'
        }, {
            name : 'label',
            mapping : '@label'
        }, {
            name : 'type',
            mapping : '@type'
        }, {
            name : 'mandatory',
            mapping : '@mandatory'
        }, {
            name : 'length',
            mapping : '@length'
        } ],
        // {name : 'values', mapping : 'options[0].@value'}], didnt work
        hasMany : {
            model : 'Options',
            name : 'options'
        }
    });

Ext.define('Options', {
        extend : 'Ext.data.Model',
//      reader : {
            type : 'json',
            root : 'options'
            },

        fields : [ {
            name : 'value1',
            mapping : '@value'
        } ],
        associations : [ {
            type : 'belongsTo',
            model : 'Property'
        } ]
    });

无法找到问题所在。有人可以建议我这样做的正确方法吗?

2 个答案:

答案 0 :(得分:0)

我认为你应该研究模型中的“关联”概念,并使用hasMany /属于关系。恕我直言,如果您需要使用您尝试设置的数据,它将使代码更容易,更清晰,同样在代码中更有用。

有关关联的更多信息,请参阅sencha docs

中的这个好链接

HTH!

答案 1 :(得分:0)

您是如何配置组合商店的?如果您的数据已经被提取,您可以通过访问返回到商店的原始数据来设置组合的数据。