如何制作一个ExtJS递归模板来输出任何javascript对象?
我正在看下面的视频,想知道是否可以制作一个递归模板来输出DOM中任何对象的所有属性/方法名--如何制作一个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({颜色:['橙色','红色','蓝色','绿色',
下面是一个纯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>