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 に答える