0

我正在尝试解析下面响应中的 childId 值。我无法解析该值。我是协会的新手,有很多概念。我在 app.js 中给出了一个警报 childId 值,但它没有显示。谁能告诉我我的映射是否正确?谁能告诉我问题是什么以及如何解决?

示例.Json

{
        "parents":{
         "parent1":{
           "parent":[
             {
                 "children":{
                     "child":[
                      {
                          "childId":1,
                          "childdetails": {
                  "childrendetails": [
                    {
                      "childName": "Test",
                      "childAge": "19"
                    },
                    {
                      "childName": "Test1",
                      "childAge": "20"
                    }
                  ]
                }

                  },
                      {
                          "childId":2,
                           "childdetails": {
                  "childrendetails": [
                    {
                      "childName": "Test2",
                      "childAge": "25"
                    },
                    {
                      "childName": "Test3",
                      "childAge": "24"
                    }
                  ]
                } 


                      }
                   ]
                }
             },
             {
            "children":{
                   "child":[
                      {
                         "childId":3,
                         "childdetails": {
                  "childrendetails": [
                    {
                      "childName": "Test4",
                      "childAge": "25"
                    },
                    {
                      "childName": "test5",
                      "childAge": "21"
                    }
                  ]
                }


                      },
                      {
                         "childId":4,
                          "childdetails": {
                  "childrendetails": [
                    {
                      "childName": "Test6",
                      "childAge": "26"
                    },
                    {
                      "childName": "test7",
                      "childAge": "27"
                    }
                  ]
                }
                     }




                   ]
                },


               "parentName":"firstName",
               "parentAge":"28"

             },


             {
                 "children":{
                     "child":[
                      {
                          "childId":5,
                          "childdetails": {
                  "childrendetails": [
                    {
                      "childName": "Test8",
                      "childAge": "24"
                    },
                    {
                      "childName": "Test9",
                      "childAges": "27"
                    }
                  ]
                }


                      },
                      {
                          "childId":6,
                           "childdetails": {
                  "childrendetails": [
                    {
                      "childName": "Test10",
                      "childAge": "25"
                    },
                    {
                      "childName": "Test11",
                      "childAge": "24"
                    }
                  ]
                } 


                      }
                   ]
                }
             },
             {
                "children":{
                   "child":[
                      {
                         "childId":7,
                         "childdetails": {
                  "childrendetails": [
                    {
                      "childName": "Test12",
                      "childAge": "25"
                    },
                    {
                      "childName": "Test13",
                      "childAge": "21"
                    }
                  ]
                }


                      },
                      {
                         "childId":8,
                          "childdetails": {
                  "childrendetails": [
                    {
                      "childName": "Test14",
                      "childAge": "26"
                    },
                    {
                      "childName": "Test15",
                      "childAge": "27"
                    }
                  ]
                }
                     }


                ]
                },


               "parentName":"secondname",
               "parentAge":"35"

             }

            ]

       }


    }

    }

ParentModel.js

Ext.define("extcityview.model.ParentModel", {
    extend: 'Ext.data.Model',
     fields: [
        'parentName', 'parentAge'
    ],
    hasMany: {model: 'extcityview.model.ChildrenModel', name: 'children'},

});




Ext.define("extcityview.model.ChildrenModel", {
    extend: 'Ext.data.Model',
    hasMany  : {model:'extcityview.model.ChildModel', name:'child', associationKey: 'childItems'},
    belongsTo: 'extcityview.model.ParentModel'
});


Ext.define("extcityview.model.ChildModel", {
    extend: 'Ext.data.Model',
    fields: [
         'childId'
    ],
     belongsTo: 'extcityview.model.ChildrenModel'
});

ChildStore.js

Ext.define('extcityview.store.ChildStore', {
    extend : 'Ext.data.Store',
    storeId : 'samplestore',
    model : 'extcityview.model.ParentModel',
    autoLoad : 'true',
    proxy : {
        type : 'ajax',
        url : 'sample.json',
        reader : {
            type  : 'json',
            root  :'parents.parent1.parent'     
        }
    }

}); 

应用程序.js

var store = Ext.create('extcityview.store.ChildStore', {

                               model: "extcityview.model.ParentModel",

});

store.load({
            callback: function() 
            {
              console.log("i am in callback");
                var parent = store.first();
                alert("parent"+parent);
                console.log("parent"+parent);
                parent.children().each(function(children){
                 children.child().each(function(child)  {
                 alert("sub region anme"+child.get('childId'));
                 console.log("sub region name"+child.get('childId'));

                 });




                }); 
            }
        });

谢谢

4

1 回答 1

1

The first thing I notice is your JSON seems to be over nested. I would change that first... the structure you have is going to make life harder than it needs to be.

JSON

{
    "parents": [
        {
            "children": [
                {
                    "childId": 7,
                    "childdetails": [
                        {
                            "childName": "Test12",
                            "childAge": "25"
                        },
                        {
                            "childName": "Test13",
                            "childAge": "21"
                        }
                    ]
                },
                {
                    "childId": 8,
                    "childdetails": [
                        {
                            "childName": "Test14",
                            "childAge": "26"
                        },
                        {
                            "childName": "Test15",
                            "childAge": "27"
                        }
                    ]
                }
            ],
            "parentName": "secondname",
            "parentAge": "35"
        }
    ]
}    

You should be able to get rid of your ChildrenModel and have the ChildModel belong to the ParentModel. Also, you could add a hasMany to the ChildModel for it's "childdetails" referencing a ChildDetails model.

I always find it helpful to refresh my memory with this guys ExtJs hasMany relationship rules.

于 2013-03-07T15:29:02.753 回答