今天我们来介绍一下Extjs中一个常用的控件Window。Window的作用是在页面中创建一个窗口,这个窗口作为容器,可以在它里面加入grid、form等控件,从而来实现更加复杂的界面逻辑。

本文的示例代码适用于Extjs 4.x和Extjs 5.x,在Extjs 4.2.1 和Extjs 5.0.1中亲测可用!

创建Extjs Window

创建Extjs Window的代码如下:

//创建window
var win = Ext.create("Ext.window.Window", {
id: "myWin",
title: "示例窗口",
width: 500,
height: 300,
layout: "fit",
items: [
{
xtype: "form",
defaultType: 'textfield',
defaults: {
anchor: '100%',
},
fieldDefaults: {
labelWidth: 80,
labelAlign: "left",
flex: 1,
margin: 5
},
items: [
{
xtype: "container",
layout: "hbox",
items: [
{ xtype: "textfield", name: "name", fieldLabel: "姓名", allowBlank: false },
{ xtype: "numberfield", name: "age", fieldLabel: "年龄", decimalPrecision: 0, vtype: "age" }
]
}
]
}
],
buttons: [
{ xtype: "button", text: "确定", handler: function () { this.up("window").close(); } },
{ xtype: "button", text: "取消", handler: function () { this.up("window").close(); } }
]
});

代码中的Form可以参考《Extjs Form用法详解》。显示效果如下:

显示Extjs Window

使用上面的代码创建好的Window并没有显示出来,它只是创建了Window,而这个Window在默认情况下是不显示的。

如果要它显示出来,我们可以通过在配置项中添加autoShow来实现,代码如下:

autoShow: true,

或者,我们可以显示的调用window的show方法:

win.show();

创建模态窗口

Extjs Window还可以作为模态窗口打开。什么是模态窗口呢?当打开一个模态窗口的时候,只有模态窗口可操作,它背后的东西都会被遮罩,从而变得不能操作。

在Extjs中,我们可以通过修改window的配置项来创建模态窗口:

modal: true,

关闭按钮和关闭动作

Extjs Window可以配置是否显示关闭按钮:

closable: false,

在关闭Extjs Window的时候,通过配置项closeAction可以控制按钮是销毁(destroy)还是隐藏(hide),默认情况下为销毁:

closeAction: "hide",

最大化和最小化

Extjs Window的最大化和最小化按钮可以通过配置项显示出来:

maximizable: true,
minimizable: true,

效果如图:

当我们点击最大化按钮的时候,窗口会变为全屏;

但是,在点击最小化按钮的时候,窗口没有什么操作,这是为什么呢?根据API里面的说法,最小化按钮没有执行任何操作,我们必须处理minimize事件来完成最小化的操作:

listeners: {
minimize: function (win, opts) {
win.collapse();
}
},

通过上面的代码,我们可以在点击最小化按钮的时候,将window折叠起来。

在Extjs Window中显示iframe

在Window中,既可以添加Extjs控件,也可以显示html代码。我们可以通过html配置项来将一个iframe添加到window中:

var win = Ext.create("Ext.window.Window", {
id: "myWin",
title: "示例窗口",
width: 500,
height: 300,
layout: "fit",
autoShow: true,
html: '<iframe style="overflow:auto;width:100%; height:100%;" src="http://www.qeefee.com" frameborder="0"></iframe>',
});

显示效果如下:

在Extjs Window中显示大段HTML

html配置项可以帮助我们在window中显示一段较简单的html代码,如果要显示太复杂的html,写在js代码中显然是有些不利于组织和维护。

那么要显示大段html的时候,我们可以事先将它写在html代码中,然后通过contentEl配置项将它显示在window中。

首先,在html中添加一段代码:

<div id="content">
<h2>欢迎访问起飞网Extjs教程</h2>
<p>
更多Extjs教程,请访问<a href="http://www.qeefee.com/zt-extjs">http://www.qeefee.com/zt-extjs</a>
</p>
</div>

然后,在window中添加配置项:

//创建window
var win = Ext.create("Ext.window.Window", {
id: "myWin",
title: "示例窗口",
width: 500,
height: 300,
layout: "fit",
autoShow: true,
contentEl: "content"
});

显示效果如下:

这种方式是先将html元素绘制在body中,然后再将它从body移动到window容器内的,所以可能会引起闪烁的现象。

解决闪烁的办法是先将div隐藏,然后在移动到window后进行显示。Extjs也考虑到了这个问题,并提供了两个css class来解决,分别是:x-hidden和x-hide-display,我们可以将任意一个属css class添加到元素中,问题就会解决了。

Extjs Window用法详解的更多相关文章

  1. Extjs Window用法详解 3 打印具体应用,是否关掉打印预览的界面

    Extjs Window用法详解 3 打印具体应用,是否关掉打印预览的界面   Extjs 中的按钮元素 {xtype: 'buttongroup',title: '打印',items: [me.ts ...

  2. Extjs Window用法详解 2 打印具体应用

    Extjs 中的按钮元素 { xtype: 'buttongroup', title: '打印', items: [ me.tsbDel = Ext.create('Ext.button.Button ...

  3. Extjs Form用法详解(适用于Extjs5)

    Extjs Form是一个比较常用的控件,主要用来显示和编辑数据的,今天这篇文章将介绍Extjs Form控件的详细用法,包括创建Form.添加子项.加载和更新数据.验证等. 本文的示例代码适用于Ex ...

  4. Extjs GridPanel用法详解

    Extjs GridPanel 提供了非常强大数据表格功能,在GridPanel可以展示数据列表,可以对数据列表进行选择.编辑等.在之前的Extjs MVC开发模式详解中,我们已经使用到了GridPa ...

  5. window.onload用法详解:

    网页中的javaScript脚本代码往往需要在文档加载完成后才能够去执行,否则可能导致无法获取对象的情况,为了避免这种情况的发生,可以使用以下两种方式: 一.将脚本代码放在网页的底端,这样在运行脚本代 ...

  6. 网站开发进阶(十三)window.onload用法详解

    window.onload用法详解 网页中的javaScript脚本代码往往需要在文档加载完成后才能够去执行,否则可能导致无法获取对象的情况,为了避免这种情况的发生,可以使用以下两种方式: 一.将脚本 ...

  7. 【Ext.Net学习笔记】03:Ext.Net DirectEvents用法详解、DirectMethods用法详解

    Ext.Net通过DirectEvents进行服务器端异步的事件处理.[Ext.Net学习笔记]02:Ext.Net用法概览.Ext.Net MessageBus用法.Ext.Net布局 中已经简单的 ...

  8. jQuery 事件用法详解

    jQuery 事件用法详解 目录 简介 实现原理 事件操作 绑定事件 解除事件 触发事件 事件委托 事件操作进阶 阻止默认事件 阻止事件传播 阻止事件向后执行 命名空间 自定义事件 事件队列 jque ...

  9. eval()函数用法详解

    eval()函数用法详解:此函数可能使用的频率并不是太高,但是在某些情况下具有很大的作用,下面就介绍一下eval()函数的用法.语法结构: eval(str) 此函数可以接受一个字符串str作为参数, ...

随机推荐

  1. 07Mybatis_入门程序——根据前面的做的两个查询联系,做一些小的总结

    总结如下: 1.parameterType和resultType 在映射文件中通过parameterType指定输入 参数的类型. 在映射文件中通过resultType指定输出结果的类型. 例如: & ...

  2. WPF用ShowDialog()弹出窗体时控制该窗体的显示位置,并传值回父窗体

    原文:http://blog.csdn.net/kiss0622/article/details/5852153 方法一: 1.父窗口代码 Window1.xaml.cs private void B ...

  3. 矩形覆盖-我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?

    class Solution { public: int rectCover(int number) { ; ; ; ||number==) ; ) ; ;i<number+;i++){ res ...

  4. js中的预加载与懒加载(延迟加载)

    js中加载分两种:预加载与延迟加载 一.  预加载,增强用户的体验,但会加载服务器的负担.一般会使用多种 CSS(background).JS(Image).HTML(<img />) . ...

  5. solaris之复习

    1.在vmware 下面加一个硬盘 参考资料:http://bbs.51cto.com/thread-483151-1.html       VMWare上solaris 加硬盘的方法(笨办法及新思路 ...

  6. 在matlab中进行地理坐标和像素坐标的相互转换

    clc;close all;clear; %地理坐标和像素坐标的相互转换 [pic,R]=geotiffread('boston.tif'); %读取带地理坐标信息的tif影像 [m,n,~]=siz ...

  7. Navicat for mysql 显示中文乱码问题

    使用navicat for mysql 打开数据库时,使用Console插入和查询数据显示乱码 处理过程 1.查看数据库编码为" utf8 -- UTF-8 Unicode",也就 ...

  8. 20145222黄亚奇《Java程序设计》第6周学习总结

    教材学习内容总结 第十章 Java将输入/输出抽象化为串流,数据有来源及目的地,衔接两者的是串流对象. 从应用程序角度来看,如果要将数据从来源取出,可以使用输入串流,如果要将数据写入目的地,可以使用输 ...

  9. Promise 学习笔记 - 时间支配者

    本文同步自我的个人博客:http://www.52cik.com/2015/11/08/promise.html JavaScript 的 promises 事实标准称为 Promises/A+.ES ...

  10. [电子书] 《Android编程入门很简单》

    <Android编程入门很简单>是一本与众不同的Android学习读物,是一本化繁为简,把抽象问题具体化,把复杂问题简单化的书.本书避免出现云山雾罩.晦涩难懂的讲解,代之以轻松活泼.由浅入 ...