假设输入数据是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)
无法找到正确的方法。 谢谢你的时间 :-) 学家
答案 0 :(得分:4)
我假设您正在为您的数据使用模型和商店?如果是这样,我建议您使用字段中提供的convert方法。它允许您将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()