0

假设输入数据是 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。

4

1 回答 1

4

我假设您正在为您的数据使用模型和存储?如果是这样,我建议您使用字段中可用的转换方法。它将允许您将该字段转换为可以理解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()
于 2012-04-19T21:24:39.757 回答