를 필터링 xtemplate , 적어도 부분적으로).에 extjs 내가 (이 아래의 "수용"하는 뷰/패널 참조) 카테고리별로 항목을 필터링하려면 다음 Xtemplate을 사용하고 빈 행
나는 다음 저장소에 저장 한 :
Ext.define("Produce.store.List", {
extend: 'Ext.data.Store',
alias: 'store.List',
config: {
model: 'Produce.model.Food',
sorters: 'category',
grouper: function(record) {
return record.get('category')[0];
},
data: [
{ category: 'fruit', str: 'tomato'},
{ category: 'fruit', str: 'green bean'},
{ category: 'vegetable', str: 'celery'},
{ category: 'vegetable', str: 'sprouts'},
{ category: 'fruit', str: 'squash'},
{ category: 'fruit', str: 'snap peas'},
{ category: 'vegetable', str: 'rhubarb'},
{ category: 'vegetable', str: 'cabbage'}
]
}
});
Xtemplate는 다음 뷰/패널에 렌더링 : 나는 가게에서이 오직 야채를 실행하면
Ext.define('Produce.view.Vegetable', {
extend: 'Ext.tab.Panel',
requires: ['Produce.model.Food'],
config: {
tabBar: {
docked: 'top',
ui: 'neutral',
layout: {
pack: 'center'
}
},
items: [{
title: 'Produce',
layout: Ext.os.deviceType == 'Phone' ? 'fit' : {
type: 'vbox',
align: 'center',
pack: 'center'
},
cls: 'demo-list',
items: [{
width: Ext.os.deviceType == 'Phone' ? null : 300,
height: Ext.os.deviceType == 'Phone' ? null : 500,
xtype: 'list',
store: 'List',
itemTpl: new Ext.XTemplate(
'<tpl for=".">',
'<tpl if="category === \'vegetable\'">',
'<a href="" target="">{str}</a>',
'</tpl>',
'</tpl>'),
variableHeights: false
}]
}
});
패널에 표시됩니다 - 대단합니다. 그러나 과일 목록이 렌더링 된 목록에서 제외 된 빈 행이 표시됩니다. (마찬가지로, "과일"보기에서 과일은 원하는대로 표시되지만 야채가있는 곳에는 공백 행이 표시됩니다.)
빈 줄을 없애려면 어떻게해야합니까? (문제는 내 목록에있는 과일과 채소가 앱을 작동시키기위한 것이므로 훨씬 많은 수의 레코드를 표시하기위한 채우기입니다. 내 실제 앱으로 분류됩니다.) Ext.IsEmpty를 사용하고 null로 필터링 해 보았습니다. 그러나이 중 어느 것도 트릭을 수행하지 못했습니다.
필자는 필터를 사용했을 것입니다.하지만 다른 뷰 (특히 야채 뷰)에서 저장소를 사용할 경우, 전체 저장소 내용을 얻지 못할 것입니다. –
신경 쓰지 마라. 내가보기를 렌더링하기 전에 clearFilter를 할 수 있다는 것을 알았다. 나중에 이것을 시도하고 어떻게 작동하는지 알려 드리겠습니다. 그라 지! –
박쥐 바로 옆에서 매력처럼 작동했습니다! 단케 oen! –