Ext.XTemplate循环遍历对象

时间:2012-10-09 08:00:16

标签: object loops extjs extjs4.1

我的控制器会返回如下数据:

{
   "success":true,
   "data":{
      "35":{
         "msg":{
            "32":{
               "module_id":"35",
               "alert_id":"32",
               "alert_datetime":"2012-11-28 16:19:19",
               "param1_type":"imo",
               "param1_value":"453465",
               "param2_type":"",
               "param2_value":"0",
               "param3_type":"",
               "param3_value":"0",
               "msg":"triiiis dve",
               "count":1
            },
            "33":{
               "module_id":"35",
               "alert_id":"33",
               "alert_datetime":"2012-10-28 00:00:00",
               "param1_type":"imo",
               "param1_value":"54984",
               "param2_type":"",
               "param2_value":"0",
               "param3_type":"",
               "param3_value":"0",
               "msg":"triis tri",
               "count":1
            }
         }
      },
      "42":{
         "msg":{
            "1":{
               "module_id":"42",
               "alert_id":"1",
               "alert_datetime":"2012-10-28 16:19:19",
               "param1_type":"imo",
               "param1_value":"9281906",
               "param2_type":"",
               "param2_value":"0",
               "param3_type":"",
               "param3_value":"0",
               "msg":"",
               "count":1
            }
         }
      },
      "39":{
         "msg":{
            "2":{
               "module_id":"39",
               "alert_id":"2",
               "alert_datetime":"2012-10-28 12:36:31",
               "param1_type":"imo",
               "param1_value":"65464546",
               "param2_type":"",
               "param2_value":"0",
               "param3_type":"",
               "param3_value":"0",
               "msg":"",
               "count":1
            }
         }
      }
   }
}

之后我这样做

that.tpl.overwrite(that.el, Ext.decode(response).data);

问题是我无法遍历结果对象键...我知道如何使用预定义的键名循环对象,但我的动态生成... 非常感谢一些帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

我假设您已经了解了嵌套的深度(在这种情况下,"数据"元素下面有4个级别):

您可以使用Ext.Object.each循环访问数据(可能还有一些查询方法,也不确定),循环遍历每个元素的子项。如果您使用Ext.data.Model实例,则可以使用Ext.data.association链接循环访问数据。

在这种情况下,您可以为每个级别创建一个不同的模板,并将每个模板的结果插入上面级别的模板中。

这听起来比我想象的要困难。

模板中的foreach目前确实只适用于支持订阅者。