【问题标题】:Extjs XTemplate three same level array loopExtjs XTemplate 三个同级数组循环
【发布时间】:2013-02-26 14:12:06
【问题描述】:


我想在我的 extjs 代码中同时循环三个数组,但它不起作用! 我一直在测试,两个数组的结果还可以,但是三个数组不行

var json = {
    name : 'tom',
    rowTitleArr : ['1','2'],
    colTitleArr : ['a','b'],
    optionArr : ['x','y']
}
var tpl = [
    '{name}<br>',
    '<tpl for="rowTitleArr">',
        '--{.}<br>',
        '<tpl for="parent.colTitleArr">',
            '----{.}<br>',
            '<tpl for="parent.parent.optionArr">',
                '--------{.}<br>',
             '</tpl>',
        '</tpl>',
    '<tpl>'
];
var tpl = new Ext.XTemplate(tpl);
tpl.overwrite(panel.body,json);

结果是:
汤姆
--1
----a
----b
--2
----a
----b
我认为应该是:
--1
----a
--------x
--------y
----b
--------x
--------y
--2
----a
--------x
--------y
----b
--------x
--------y
... 为什么?

【问题讨论】:

    标签: extjs


    【解决方案1】:

    我得到这个工作的唯一方法是将你的 rowTitleArr 作为一个对象。

    您的示例不起作用,因为值中不知道 parent.parent。你可以用模板执行函数来设置它。

    var data = {
            name: 'xxx',
            rowTitleArr: [{number:'1'},{number:'2'},{number:'3'}],
            colTitleArr: ['a', 'b', 'c'],
            optionArr : ['x','y']
        };
        var tpl = [
            '{name}',
            '<br/>',
            '<tpl for="rowTitleArr">',
            '----{number}<br>',
            '<tpl exec="values.parent = parent;"></tpl>',
                '<tpl for="parent.colTitleArr">',
            '---------{.}<br>',                    
                        '<tpl for="parent.parent.optionArr">',
                    '----------------{.}<br>',
                 '</tpl>',
                '</tpl>',
            '</tpl>'];
    

    小提琴: http://jsfiddle.net/johanhaest/2WEVE/1/

    【讨论】:

    • 我做了一个测试,但结果还是错了!请在我的回复中查看我的测试结果!谢谢!
    • 你是对的,这很难做到的原因是因为你正在使用数组,你不能只调用 parent.parent。如果在开始循环之前准备好数据,或者使用一些模板函数,可能会更容易。
    猜你喜欢
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    相关资源
    最近更新 更多