0
我想創建一個數據視圖,使得它有三個表格列,並顯示在此順序的項目的垂直列表視圖:在數據視圖3列
- 1,7,13
- 2,8,14
- 3,9,15
- 4,10,16
- 5,11
- 6,12
我的商店包含16個數據模型,如上所示(上面的數字是模型中的'名稱'字段)。我正在嘗試使用帶有成員函數的xtemplate來完成此操作,該成員函數返回任何給定行的第二列和第三列的值。我允許每列最多6個項目。該代碼是
Ext.define('TestExtJs.view.ColumnView', {
extend: 'Ext.view.View',
alias: 'widget.columnview',
itemSelector: 'div.thumb-wrap',
emptyText: 'No items to show',
config: {
store: null,
tpl: null,
},
initComponent: function() {
var itemData = [
{id: 1, name: '1'},
{id: 2, name: '2'},
{id: 3, name: '3'},
{id: 4, name: '4'},
{id: 5, name: '5'},
{id: 6, name: '6'},
{id: 7, name: '7'},
{id: 8, name: '8'},
{id: 9, name: '9'},
{id: 10, name: '10'},
{id: 11, name: '11'},
{id: 12, name: '12'},
{id: 13, name: '13'},
{id: 14, name: '14'},
{id: 15, name: '15'},
{id: 16, name: '16'}
];
var theStore = new Ext.data.Store({
//fields:['id', 'name'],
model: 'TestExtJs.model.Item',
data: itemData
//requires: ['TestExtJs.model.Item']
});
this.store = theStore;
/*var columntpl = new Ext.XTemplate(
'<tpl for=".">',
'{name}',
'</tpl>'
);*/
var columntpl = new Ext.XTemplate(
'<tpl for=".">',
'<tpl if="(xindex - 1) < (xcount/3)">',
'<div style="width:100%;">',
'<div style="float: left;width: 33%" class="thumb-wrap-first">',
'{name} ',
'</div>',
'<tpl if="this.getVal(xindex, 2)">',
'<div style="float: left;width: 34%" class="thumb-wrap-second">',
'{[this.getVal(xindex, 2)]}',
'</div>',
'</tpl>',
'<tpl if="this.getVal(xindex, 2)">',
'<div style="float: left;width: 33%" class="thumb-wrap-third">',
'{[this.getVal(xindex, 3)]}',
'</div>',
'</tpl>',
'</div>',
'</tpl>',
'</tpl>',
{
getVal : function(xin, cin){
if(cin === 1){
}
if(cin === 2){
var v = this.getStore.getAt(xin + 6 - 1);
if(v){
return v.get('name');
}
return null;
}
if(cin === 3){
var v = this.getStore.getAt(xin + 2*6 - 1);
if(v){
return v.get('name');
}
return null;
}
}
}
);
this.tpl = columntpl;//debugger;
this.callParent(arguments);
}
});
但是,在控制檯中我得到一個錯誤「XTemplate錯誤:無法調用未定義的方法‘getAt’」。如何在xtemplate成員函數中訪問此數據視圖的存儲?