ExtJs通过视图访问控制器

时间:2015-07-13 15:48:15

标签: javascript extjs extjs5

我有一个带有MVC模型的extjs应用程序,在视图中我有一个面板和一个寻呼机,在视图的控制器中,我有视图的所有事件,但我不知道取消选择的原因事件没有激活,所有其他事件通常都被激活(选择事件工作正常),为什么这个事件有问题?

我有这段代码:

观点:

Ext.define('app.view.ViewResultados', {
extend: 'Ext.window.Window',
alias: 'widget.viewResultados',
id: 'viewVentanaResultado',
height: 295,
width: 690,
layout: 'fit',
collapsible: true,
constrain: true,
resizable: true,
closeAction: 'hide',
initComponent: function() {

    var paginador = Ext.create('Ext.PagingToolbar', {
       // store: dataStore,
        id:this.id+'_paginador',
        displayInfo: true,
        displayMsg: 'Mostrando resultados {0} - {1} de {2}',
        emptyMsg: "No hay resultados para mostrar",
        items:['-',],
        pageSize: 10, 
        action: 'paginador',
        resizable: false,
        height: 50,
    });

    var grid = Ext.create('Ext.grid.Panel', {
        id: this.id+"_tabla",
        alternateClassName: 'Ext.grid.Column',
        sortable: true,
        selModel: Ext.create('Ext.selection.CheckboxModel'),
        action: 'tabla',
        bbar: paginador
    });

    Ext.apply(this, {

        items: [grid],
        buttons: [
            {
                text:'Borrar selección',
                action: 'borrar'
            }]
    });
    this.callParent(arguments);
}
});

控制器:

Ext.define('app.controller.ControlResultados', {
extend: 'Ext.app.Controller',
views : ['ViewResultados'],

init: function() {
    this.control({
        'viewResultados button[action=borrar]': {  
            click: this.borrar
        },
        'viewResultados button[action=exportar_xls]': {  
            click: this.exportar_xls
        }, 
        'viewResultados button[action=reporte]': {  
            click: this.reporte
        }, 
        'viewResultados grid[action=tabla]': {  
            select: this.seleccionRegistros,

        },
        'viewResultados':{
            close: this.cerrar
        },
        '#resultados_tabla':{
            deselect: this.test
        }
    });
},
borrar: function (b, e, eOpts){

},
exportar_xls: function (b, e, eOpts){

},
reporte: function (b, e, eOpts){

}, 
seleccionRegistros: function(grilla, record, index, eOpts){
    console.log("ACCESS SELECT EVENT");
},
eliminarSeleccion :function(grilla, record, index, eOpts){

},

adicionarFeatureSeleccionado : function(registro){
    var ventana = Ext.getCmp('resultados_tabla');
    console.log(ventana);
}, 

removerFeatureSeleccionado: function(registro){
    console.log(registro.data["id_interno"]);
},

acercamientoSeleccion: function() { 

},
abrirVentana: function(titulo, resultados){

}, 
cargarCapaConsulta: function(listadoDatos){

},

construirTablaResultado: function(listadoDatos, geom,idConsulta,  idElemento, tipo){

},
construirColumnas_DataStore: function(objeto,geom, tipo,idElemento ){           

},

acercamientoSeleccion: function() {     

}, 

acercamientoSeleccionCompleta: function() {

},

contiene: function(a, obj) {

},
buscarcapa: function(id){

},
cerrar: function(){

},
test: function(){
    console.log("FUNCION!");
}
});

1 个答案:

答案 0 :(得分:0)

我用这个解决了mi的问题:

Ext.define('Ext.overrides.selection.CheckboxModel', {
override: 'Ext.selection.CheckboxModel',
compatibility: '5.1.0',
privates: {
    selectWithEventMulti: function(record, e, isSelected) {
        var me = this;

        if (!e.shiftKey && !e.ctrlKey && e.getTarget(me.checkSelector)) {
            if (isSelected) {
                me.doDeselect(record); // Second param here is suppress event, not "keep selection"
            } else {
                me.doSelect(record, true);
            }
        } else {
            me.callParent([record, e, isSelected]);
        }
    }
}
});