如何制作一个ExtJS递归模板来输出任何javascript对象?

如何制作一个ExtJS递归模板来输出任何javascript对象?,extjs,extjs4,extjs4.1,Extjs,Extjs4,Extjs4.1,我正在看下面的视频,想知道是否可以制作一个递归模板来输出DOM中任何对象的所有属性/方法名-- 下面是一个纯javascript示例,我很好奇如何在extjs中使用XTemplate-- var mObj={}; mObj.mArr=[]; mObj.mArr.push({id:['id1','id2','id3']}); mObj.mArr.push({天:['星期一','星期二','星期三','星期四']); mObj.mArr.push({颜色:['橙色','红色','蓝色','绿色',

我正在看下面的视频,想知道是否可以制作一个递归模板来输出DOM中任何对象的所有属性/方法名--

下面是一个纯javascript示例,我很好奇如何在extjs中使用XTemplate--

var mObj={};
mObj.mArr=[];
mObj.mArr.push({id:['id1','id2','id3']});
mObj.mArr.push({天:['星期一','星期二','星期三','星期四']);
mObj.mArr.push({颜色:['橙色','红色','蓝色','绿色','黄色','白色']);
mObj.mArr.push(函数isTrue(){return true;});
功能r(obj){
如果(obj)
for(obj中的var键){
if(对象类型[键]=“对象”)
r(obj[key]);
else if(对象类型[键]=“功能”)
document.writeln(“+obj[key]+”
); else if(对象类型[键]!=“功能”) document.writeln(对象[键]+“
”) } 返回; } r(mObj);​
允许在模板内执行自定义函数甚至任意内联代码(请参阅链接文档页面中的相应部分),因此我想从技术上讲,您可以从XTemplate内调用递归函数,但这并不比直接调用递归函数好多少

我在这里看到了您的想法-将标记带到输出函数之外,但如果您想迭代对象,恐怕XTemplate不会有很大帮助,因为它只有迭代数组的结构

“自动填充数组”中的示例说明:

..//循环通过根节点上的数组
因此,您只能编写如下模板:

<p>Name: {name}</p>
<tpl for="days">
    ...iterate days array
</tpl>
<tpl for="colors">
    ...iterate colors array
</tpl>
名称:{Name}

…迭代天数数组 …迭代颜色数组
这时您就知道数据对象中应该有哪些属性


或者,您可以为输出的不同类型的数据定义单独的模板。

感谢提供更多信息。我想我需要首先递归地将DOM元素推送到一个树中,然后在tpl中使用它?你是说递归地迭代你的数据以动态地创建一个模板,然后实际地动态地应用它?这听起来有些过分,只有在数据结构重复时才有用。但是如果它重复,那么您可以静态地创建模板吗?
<tpl for=".">...</tpl>       // loop through array at root node
<p>Name: {name}</p>
<tpl for="days">
    ...iterate days array
</tpl>
<tpl for="colors">
    ...iterate colors array
</tpl>