煎茶触摸:项目Tpl循环



假设输入数据是一个json,如下所示:

{   "facet_fields":{
        "cat":[
            "electronics",3,
            "card",2,
            "graphics",2,
            "music",1
        ]}}

数组"cat"已恢复,应使用 for 循环显示。我被困在这一点上:)

到目前为止的代码:

Ext.define('Sandbox.view.FacetList', {
    extend: 'Ext.List',
    xtype: 'facet-list',
    config: {
        baseCls: 'article-list',
        itemTpl: '' +
            '<div class="article">' +
                '<tpl for="categories">' +
                      '<div>Item {#}</div>' +
                 '</tpl>' +
            '</div>'
    }
});

此输出:Item 1 Item 2 Item 3 Item 4

我希望看到以下输出: electronics (3), card (2), graphics (2), music (1)

找不到正确的方法。感谢您的时间:-)J.

我假设您正在使用模型和数据存储?如果是这样,我建议您使用字段中可用的转换方法。它将允许您将该cat字段转换为tpl可以理解的更好数据。

Ext.define('MyModel', {
    extend: 'Ext.data.Model',
    config: {
        fields: [
            {
                name: 'cat',
                convert: function(values, record) {
                    var data = [],
                        ln = values.length,
                        i, name, value;
                    // loop through each of the array values
                    for (i = 0; i < ln; i++) {
                        // if it is a name, save it
                        if (i % 2 == 0) {
                            name = values[i];
                        }
                        // if it is a value, save the value and push 
                        // to the data array
                        if (i % 2 == 1) {
                            value = values[i];
                            data.push({
                                name: name,
                                value: value
                            });
                        }
                    }
                    // return the data array for this field
                    return data;
                }
            },
            ...
        ]
    }
});

然后你可以在你的tpl中使用它,就像这样:

tpl: [
    '<tpl for="cat">',
        '{name}: {value}, '
    '</tpl>'
].join()

最新更新