Sencha过滤来自商店的数据

时间:2014-01-10 07:18:21

标签: javascript extjs sencha-touch

我是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'
            }]
        }]
    });
}
});

在我的数据库中,我有两个表格cajasboxes,另一个图表是id_cajaid_box

关系的图像

因此,在对sencha的其他视图中,我在xtype: list中显示了框的名称。所以,我的问题是,当我点击列表中的某个项目并触发函数clickCaja时,单击该元素的id并按ID框过滤图像

1 个答案:

答案 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列表。