Featured Posts

ExtJS, Spring MVC 3 e Hibernate 3.5: Exemplo de um... Este tutorial demonstra como implementar um CRUD Grid (Create, Read, Update, Delete) usando ExtJS, Spring MVC 3 e Hibernate 3.5 O que geralmente queremos fazer com os dados Create (Criar) - (Insert) Read...

Readmore

ExtJS plugin: PagingToolbarResizer Ei pessoal, Este é o meu primeiro plugin em ExtJS. Apesar de não ser algo complicado, estou muito feliz e é um grande feito para mim! Bem, chega e introduções e vamos ao que realmente interessa. O...

Readmore

8++ perguntas para @loiane - por @hlegius Tempos atrás o Helio me enviou um questionário para eu responder, uma espécie de "entrevista". E agora ele publicou no blog dele! :) São minhas opiniões pessoais, e isso não quer dizer que estou...

Readmore

Carreira em TI: Currículo em Inglês Uma das grandes dificuldades para as pessoas da área de TI é, muitas vezes, escrever um bom currículo em inglês. E ter um currículo em inglês, é essencial, já que inglês é tão importante quanto...

Readmore

Entrevista para o Jornal A Tribuna Jan/2010: Profissões... Na última de semana de janeiro tive a honra de conceder mais uma entrevista para o jornal A Tribuna - vendido no Espírito Santo, meu estado natal - sobre mercado de trabalho na área de TI. A reportagem...

Readmore

ExtJS: Ext.Window: hide ou close?

Posted by Loiane | Posted in Ext JS | Posted on 04-01-2010

2

Neste curto tutorial, você vai aprender como controlar o componente Ext.Window Panel do ExtJS.

Problema: você criou uma janela com ExtJS, e ela funcionou perfeitamente na primeira vez. Quando a aplicação disparou o evento para abrir a janela pela segunda vez, nada aconteceu, ou você viu um erro no firebug (algum coisa is not defined ou alguma coisa is null). Como reparar isso?

Solução: quando você não diz como o Ext.Window deve trabalhar, o comportamento padrão é fechar (close) o componente, e com isso, destruí-lo (destroy). Devemos então, esconder (hide) o componente, assim, poderemos reutilizá-lo nas próximas vezes.

Código de Exemplo (referência: http://www.extjs.com/deploy/dev/examples/window/hello.html):

HTML:

<html>
<head>
<title>Ext.Window: close or hide</title>

	<link rel="stylesheet" type="text/css" href="/ext-window/ext-3.0.3/resources/css/ext-all.css" />

	<script src="/ext-window/ext-3.0.3/adapter/ext/ext-base.js"></script>
	<script src="/ext-window/ext-3.0.3/ext-all.js"></script>

	<script src="/ext-window/js/ext-window.js"></script>

</head>
<body>
	<input type="button" id="show-btn" value="Show Window" />

	<div id="hello-win" class="x-hidden">

    <div class="x-window-header">Hello Dialog</div>
    <div id="hello-tabs">
        <!-- Auto create tab 1 -->
        <div class="x-tab" title="Hello World">
            <p>Ext.Window Panel: Close or Hide?</p>
        </div>
    </div>
</div>

</body>
</html>

JS:

Ext.onReady(function(){

	Ext.BLANK_IMAGE_URL = '/ext-window/ext-3.0.3/resources/images/default/s.gif';

    var win;
    var button = Ext.get('show-btn');

    var tab = new Ext.TabPanel({
        applyTo: 'hello-tabs',
        autoTabs:true,
        activeTab:0,
        deferredRender:false,
        border:false
    });

    button.on('click', function(){

        // create the window on the first click and reuse on subsequent clicks
    	//cria a janela no primeiro clique e a reusa nos próximos cliques
        if(!win){
            win = new Ext.Window({
                applyTo:'hello-win',
                layout:'fit',
                width:500,
                height:300,
                closeAction:'hide', //'close' - destroy the component
                plain: true,

                items: tab,

                buttons: [{
                    text: 'Close',
                    handler: function(){
                        win.hide();
                    }
                }]
            });
        }
        win.show(this);
    });
});

Bons códigos!

English Version of this post: Ext.Window Panel: Show or Hide?

Download do projeto: public http://github.com/loiane/ext-window

  • Share/Bookmark

Posts Similares

Comments (2)

[...] ExtJS: Ext.Window: hide ou close? var dzone_style="2";AKPC_IDS += [...]

[...] This post was mentioned on Twitter by Loiane Groner, Francisco Souza. Francisco Souza said: RT @loiane: ExtJS: Ext.Window: hide ou close? http://bit.ly/5xur8Q (pt-br) [...]

Write a comment