在Ext中应该来说Window窗体是非常重要的吧,window窗体并非Extjs独有的组件,这也是JavaScript定义的,它分属于浏览器的组件,窗体是程序和用户进行交互的可视界面,窗体也是对象,窗体定义了生成窗体的模板,实例化一个窗体类就产生了一个窗体。在window窗体中也有特别多的事件方法供我们进行使用,在现实生活中,窗口是可视化的,我们可以通过窗体用眼睛看到窗体中发生的一切,在程序世界中也不例外,我们可以定义窗体,我们也想看到程序中发生的一切。那窗体中窗体中发生的一切如何发生呢?那就需要我们自己来定义了,窗体中发生的一切,我们用眼睛所看到的一切都是形形色色的组件,可以说都是组件,窗体最大,我们是通过窗体来进行观察一切的。所以想要开发功能,首先要定义窗体,创建窗体,只要有了窗体,里面才可以放任何的组件。其实body也是一个大的窗体,不过 这不用我们手动创建而已。说白了 窗体也是一个大的dom.window其实就是一个大容器而已,你尽管根据window的规则往里面放东西就可以了!
说这么多,也是为了帮助大家更好的理解window窗体,大家记住:程序的世界,一切来源于生活。一切也高于生活。
下面我们就介绍在Ext的世界中window窗体如何是被创建的?
①首先定义一个函数function (){} 在function中定义窗体对象。
function queryWindows() {
return Ext.create('Ext.window.Window',{
title:'student表',
height:document.body.clientHeight*0.8, //根据客户端当前屏幕的大小显示高度
width:document.body.clientWidth*0.8, //根据客户端当前屏幕的大小显示宽度
maximizable:true,
modal: true,
items:[queryPanel()], //items:是在window容器中装组件的一个入口。
closeAction: 'destroy',
layout: 'vbox', //当前布局是垂直布局 fit:自适应布局
buttons:[
{xtype:'button',text:'增加'},
{xtype:'button',text:'删除'},
{xtype:'button',text:'取消',handler:function (btn) {
btn.up('window').close();
}}
],
listeners:{ //监听事件 ,当window窗体被关闭时就会触发改事件,并执行该事件里面的回调函数。把当前全局变量的属性window置为空。为下一次创建窗体做准备。
close:function () {
var IS_VIEW = false;
queryWindow.window=null;
}
}
});
}
其实上面的代码就是创建窗体的函数,但是在实际工作中,有这个是远远不够的,你想一下,如果当前窗体没有被关闭的话,我们一直点击创建窗体事件,那么无数个窗体被创建,这明显不是我们想要的。所有我们要对这个函数的创建时机做相应的处理,窗体只能被创建一次,只有当前窗体被销毁后才能创建新的窗体,那么怎么处理呢?别着急,往下看 :
我们定义一个对象,这个对象代表着已经被创建好的窗体,我们要给这个对象定义一些属性,来控制当前用户无限制的创建窗体!
var queryWindow={ //我们为这个对象定义两个属性,第一个是window,我们要通过这个属性的值是否为null,来判断当前是否有窗体被创建,如果有则不创建。
window:null,
show:function () {
if(!this.window){ //当当前window为null的情况下 则立即创建窗体。
this.window=queryWindows();
}
this.window.show();//调用当前窗体show()方法来显示窗体,窗体只被创建 而显示是不起作用的。
}
}