假设输入数据是一个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()