我是sencha touch的新用户
我有这个商店
Ext.define('Final.store.Fotos',{
extend: 'Ext.data.Store',
requires: ['Final.model.Foto'],
config:{
model: 'Final.model.Foto',
storeId: 'Fotos',
autoLoad: true,
proxy: {
type:'ajax',
url: '../../../prueba/index.cfm',
reader:'json'
}
}
});
模特
Ext.define('Final.model.Foto',{
extend: 'Ext.data.Model',
config:{
fields:[
{name: 'caja', type: 'string'},
{name: 'foto_id', type: 'int'},
{name: 'id_caja', type: 'int'},
{name: 'foto', type: 'string'}
]
}
});
和控制器
Ext.define('Final.controller.controladorCaja',{
extend: 'Ext.app.Controller',
config: {
stores: ['Cajas', 'Fotos'],
models: ['Caja', 'Foto'],
refs: {
cajaLista: 'list'
},
control: {
cajaLista: {
itemtap: 'clickCaja'
}
}
},
clickCaja: function(series, item, evento, caja){
var idcaja = caja.data.caja;
var vista = Ext.getCmp('principal');
vista.push({
title: ' Fotos',
items : [{
extend: 'Ext.navigation.View',
config: {
id: 'fotos'
},
items: [{
xtype: 'button',
text: 'fsf'
}]
}]
});
}
});
在我的数据库中,我有两个表格cajas
或boxes
,另一个图表是id_caja
或id_box
因此,在对sencha的其他视图中,我在xtype: list
中显示了框的名称。所以,我的问题是,当我点击列表中的某个项目并触发函数clickCaja
时,单击该元素的id并按ID框过滤图像
答案 0 :(得分:1)
如果您的foto-list默认显示所有照片,并且如果点击一个特定的'caja',则可以使用built in store filter。
var idcaja = caja.data.caja;
Ext.getStore('Fotos').filterBy(function(record, id){
return record.data.id_caja == idcaja;
}, this);
修改强>
如果您使用的是默认Ext.tab.Panel
,则可以使用setActiveItem方法在标签之间切换以在标签之间切换。
示例:强>
在主视图中
Ext.define('App.view.Main', {
extend: 'Ext.tab.Panel',
xtype: 'main',
id : 'mainpanel', //set an id for your tab panel
...
}
在您的控制器中:
refs: {
...,
mainPanel :'#mainpanel' //get a reference to the main panel
},
在您的事件处理程序中,您可以使用类似......
的内容this.getMainPanel().setActiveItem('fotoList'); //fotoList = xtype of your foto view
...切换到您的foto列表。