ExtJS入門教程01,Window如此簡單,你怎能不會?


這是一系列ExtJS教程,今天的是第一篇,主要介紹ExtJS中Window的基本用法。希望大家能夠支持!

來吧,創建一個漂亮的彈出窗

var win = Ext.create("Ext.Window", {
    title: "ExtJS Window",
    width: 500,
    height: 300,
    autoShow: true
});

效果:

image

小伙伴們注意了,如果不加autoShow:true的時候,window是不會顯示出來的,當然,我們可以使用win.show()方法來顯示一個窗口。

在窗口中顯示一個網頁

小伙伴們常常希望能夠在window中添加iframe,可以方便的將其它頁面顯示在窗口中,具體的做法是如下:

Ext.onReady(function () {
    var win = Ext.create("Ext.Window", {
        title: "ExtJS Window",
        width: 500,
        height: 300,
        html:'<iframe style="overflow:auto;width:100%; height:100%;" src="http://www.qeefee.com" frameborder="0"></iframe>',
        autoShow: true
    });
});

效果:

image

(我這里顯示了自己的網站,臭美一下~)

為window指定html屬性,這個屬性是要在window的body中顯示的html元素,可以是任意的html標簽(iframe也是html標簽),例如我們要顯示一段話:

Ext.onReady(function () {
    var win = Ext.create("Ext.Window", {
        title: "ExtJS Window",
        width: 500,
        height: 300,
        html:'<p>齊飛是個程序員!</p>',
        autoShow: true
    });
});

效果如下:

image

顯示大段的HTML

當然,小伙伴們的需求總是很多的,比如就有人說了,html屬性如果很長,這樣拼接字符串豈不是很丑?!

答案是肯定的,丑的不能再丑了~大家看一下iframe的那個代碼,已經是比較長了,編輯的時候經常要拖動下面的滾動條,這樣顯然是不方便的,並且還要經常寫屬性,引號、雙引號來回切換,簡直是煩透了,有沒有解決辦法呢?

額,辦法肯定是有的,小伙伴們,來試試contentEl配置項吧。

contentEl配置項允許我們將一個html元素指定為window要顯示的內容,也就是說,如果我們頁面上有一個如下的div:

<div id="content">
    <strong>Window 的內容</strong>
    <p>齊飛是個程序員!</p>
</div>

我們可以在window的配置中來使用:

Ext.onReady(function () {
    var win = Ext.create("Ext.Window", {
        title: "ExtJS Window",
        width: 500,
        height: 300,
        contentEl: 'content',
        autoShow: true
    });
});

效果如下:

image

contentEl可以將頁面中現有的html元素添加到window中,需要注意的是一定要在頁面加載完成之后使用,否則頁面中的元素是不存在的。

解決內容閃爍的問題

這個時候,愛找麻煩的小伙伴又站了出來,小伙伴說頁面加載以后內容先在頁面中繪制了,會閃爍一下才顯示在window中,額,當然,這是一個問題,那么該如何解決呢?

聰明的小伙伴這個時候自己想到一個辦法,就是先將div隱藏,加一個style屬性,把display設置為none;

愛動手的小伙伴驗證了聰明的小伙伴的想法,發現div在window中仍然是隱藏的,如果我們再添加一個額外的方法豈不是大費周章?

現在我們來看一看contentEl的API吧,在api的最后一段,有這樣一句話:

Add either the x-hidden or the x-hide-display CSS class to prevent a brief flicker of the content before it is rendered to the panel.

英語好的小伙伴們知道了吧,為我們的div添加一個x-hidden或者x-hide-display屬性就能簡單的解決內容閃爍的問題了。修改后的div如下:

<div id="content" class="x-hidden">
    <strong>Window 的內容</strong>
    <p>齊飛是個程序員!</p>
</div>

作為一個容器,它應該這樣

看到了吧,window就是這么簡單,我們可以很方便的來使用它。

通過Ext.create來創建window對象,create方法的第二個參數為window的配置項,包括width、height等。

ExtJS window作為一個容器,可以在里面添加其他的容器或組件,例如form、grid等,在添加extjs組件的時候可以使用items配置項來實現。

下面的代碼演示了如何向window中添加一個form,並在form中加入一些控件:

Ext.onReady(function () {
    var win = Ext.create("Ext.Window", {
        title: "ExtJS Window",
        width: 500,
        height: 300,
        items: [
            {
                xtype: "form",
                border: false,
                bodyPadding: 5,
                fieldDefaults: {
                    labelAlign: 'right',
                    labelWidth: 60,
                    width: 470
                },
                items: [
                    {
                        xtype: "textfield", fieldLabel: "姓名"
                    },
                    {
                        xtype: "textarea", fieldLabel: "留言"
                    }
                ]
            }
        ],
        buttons: [
            {
                text: "確定"
            }
        ],
        autoShow: true
    });
});

效果如圖:

image

哎呀,我被關閉了!

小伙伴們通常希望在window關閉的時候得到通知,例如刷新現有的列表等,現在extjs中的事件是通過在配置項中添加listeners來完成,當然,如果是動態添加事件,就要使用on方法了。

我們先來一個通過listeners添加事件的例子:

var win = Ext.create("Ext.Window", {
    title: "ExtJS Window",
    width: 500,
    height: 300,
    listeners: {
        close: function () {
            Ext.MessageBox.alert("提示", "哎呀,我被關閉了!");
        }
    },
    buttons: [
        {
            text: "確定",
            handler: function () {
                this.up("window").close();
            }
        }
    ],
    autoShow: true
});

當我們點擊“確定”按鈕的時候將關閉窗口,試一下效果吧。

下面來一個通過on方法添加事件的例子:

var win = Ext.create("Ext.Window", {
    title: "ExtJS Window",
    width: 500,
    height: 300,
    buttons: [
        {
            text: "確定",
            handler: function () {
                this.up("window").close();
            }
        }
    ],
    autoShow: true
});

win.on("close", function () {
    Ext.MessageBox.alert("提示", "哎呀,我被關閉了!");
});

好了,這就是ExtJS Window的一些入門級用法,你還有別的不明白?告訴我,我來完善這篇文章。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM