Ir para conteúdo


Foto

botao chama tela duas vez


  • Por favor, faça o login para responder
1 resposta neste tópico

#1 junaooaks

junaooaks

    Member Avançado

  • Membros
  • PipPipPip
  • 60 posts

Postado 16 April 2014 - 12:30

pessoal tenho um botao de insert que esta chamando a janela modal com o form duas vezes uma sobre a outra

ja rodei o no controll pra ver se tem duplicidade:
vou colocar aqui o controller:

Ext.require('Ext.window.MessageBox');

Ext.define('PROSOFTMK.controller.Empresa', {
    extend: 'Ext.app.Controller',
    
    stores: ['Empresas'],
    models: ['Empresa'], 
	
    views: [
    'empresa.List',
    'empresa.Edit'
    ],
    
    refs: [
    {
        ref:'empresaEdit', 
        selector:'empresaEdit'
    },
    {
        ref:'empresaList', 
        selector:'empresaList'
    }
    ],

    init: function() {
        this.control({
            'empresaList': {
                itemdblclick: this.edit
            },

            'empresaList button[action=insert]': {
                click: this.insert
            },
            
            'empresaList button[action=edit]': {
                click: this.edit
            },

            'empresaList button[action=destroy]': {
                click: this.destroy
            },
            
            'empresaList button[action=refresh]': {
                click: this.refresh
            },

            'empresaEdit button[action=save]': {
                click: this.save
            }
        });
    },
    disparandoNossoEvento: function(){
        console.log('Evento customizado detectado');
    },
    
    refresh: function(){
        this.getEmpresaList().store.load();
    },
    
    insert: function(btn, evt, opt) {
        var view = Ext.widget('empresaEdit');
        view.setTitle('Inserindo nova Empresa');
    },
    
    destroy: function() {
        
        var grid    = this.getEmpresaList(),
        records = grid.getSelectionModel().getSelection();

        if(records.length === 0){
            Ext.Msg.alert('Atenção', 'Nenhum registro selecionado');
            return false;
        }else{
            Ext.Msg.show({
                title : 'Confirmação',
                msg : 'Tem certeza que deseja deletar o(s) registro(s) selecionado(s)?',
                buttons : Ext.Msg.YESNO,
                icon : Ext.MessageBox.WARNING,
                scope : this,
                width : 450,
                fn : function(btn, ev){
                    if (btn == 'yes') {
                        var store = this.getEmpresaList().store;
                        store.remove(records);
                        this.getEmpresaList().store.sync();
                    }
                }
            });
        }
    },

    save: function(button) {	
        
        var win     = button.up('window'),
        form    = win.down('form').getForm(),
        id      = form.getRecord() ? form.getRecord().get('id') : 0;
        
        if (form.isValid()) {
            var record = form.getRecord(),
            values = form.getValues();

            if (record){
                if(record.data['id']){
                    record.set(values);
                }
            } else{
                var record = Ext.create('PROSOFTMK.model.Empresa');
                record.set(values);
                this.getEmpresaList().store.add(record);
            }

            win.close();
            this.getEmpresaList().store.sync();
        }else{
            Ext.ux.Msg.flash({
                msg: 'Ha campos preenchidos incorretamente',
                type: 'error'
            });
            
        }
        
    },
    
    edit: function(){
        
        var records = this.getEmpresaList().getSelectionModel().getSelection();    	
    	
        if(records.length === 1){
            var editWind = Ext.widget('empresaEdit');    	
            var editForm = editWind.down('form');
            var record = records[0];
            editForm.loadRecord(record);
        }else{
            return;
        }		
    }

});


#2 Legolas

Legolas

    Ext JS - Admin

  • Administrators
  • 3497 posts
  • LocationBelo Horizonte

Postado 17 April 2014 - 11:29

junaooaks, pelo seu código parece estar certo, pois a ação "insert" que é chamada pelo evento click do botão somente cria o seu componente de alias "empresaEdit".
No caso vc teria que fazer alguns testes, pois talvez na sua aplicação tenha sido implementado o mesmo monitoramento para este botão em outro controller (não seu só chutando mesmo). Faz o seguinte comente no seu Controller "PROSOFTMK.controller.Empresa" a linha onde vc add o monitoramento para o botão de ação "insert".
...
'empresaList button[action=insert]': {
    click: this.insert
},
...
Daí se ao clicar nesse botão e exibir o formulário é porque em outro lugar está sendo criado esse mesmo componente. Assim é só procurar onde vc cria uma nova instância do componente "empresaEdit".
Agora se não exibir o seu formulário aí o problema pode estar no seu componente "empresaEdit".
Veja se lhe ajuda.

"A verdadeira vitória não é derrotar alguém forte... É ser capaz de proteger alguém que você ama de verdade!" (Maito Dai)





0 usuário(s) está(ão) lendo este tópico

0 membros, 0 visitantes, 0 membros anônimos