新手指南--查看文章
 
第 5 章 雀跃吧!超脱了一切的弹出窗口。
发布时间:2008-3-6

5.1. 呵呵~跳出来和缩回去总给人惊艳的感觉。

 

浏览器原声的alert(),confirm(),prompt()显得如此寒酸,而且还不能灵活配置,比如啥时候想加个按钮,删个按钮,或者改改按下按钮触发的事件了,都是难上加难的事情。

既然如此,为何不同ext提供的对话框呢?那么漂亮,那么好配置,可以拖啊,可以随便放什么东西,在里边用啥控件都可以,甚至放几个tab乱切换呀,连最小化窗口的功能都提供了。哈哈,神奇啊,完全可以让alert退役了。

5.2. 先看看最基本的三个例子

 

嘿嘿,为了加深认识,还是先去看看examples下的例子吧。1.x在dialog目录下。2.0在message-box目录下。

5.2.1. Ext.MessageBox.alert()

 
Ext.MessageBox.alert('标题', '内容', function(btn) {
alert('你刚刚点击了 ' + btn);
});

现在可以通过第一个参数修改窗口的标题,第二个参数决定窗口的的内容,第三个参数是你关闭按钮之后(无论是点ok按钮还是右上角那个负责关闭的小叉叉),就会执行的函数,嘿嘿,传说中的回调函数。

5.2.2. Ext.MessageBox.confirm()

 
Ext.MessageBox.confirm('选择框', '你到底是选择yes还是no?', function(btn) {
alert('你刚刚点击了 ' + btn);
});

选择yes或者是no,然后回调函数里可以知道你到底是选择了哪个东东。

5.2.3. Ext.MessageBox.prompt()

 
Ext.MessageBox.prompt('输入框', '随便输入一些东西', function(btn, text) {
alert('你刚刚点击了 ' + btn + ',刚刚输入了 ' + text);
});

随便输入几个字,然后点按钮,它会告诉你输入了些什么东西

5.3. 如果你想的话,可以控制得更多

 

5.3.1. 可以输入多行的输入框

 
Ext.MessageBox.show({
title: '多行输入框',
msg: '你可以输入好几行',
width:300,
buttons: Ext.MessageBox.OKCANCEL,
multiline: true,
fn: function(btn, text) {
alert('你刚刚点击了 ' + btn + ',刚刚输入了 ' + text);
}
});

其实只需要show,我们就可以构造各种各样的窗口了,title代表标题,msg代表输出的内容,buttons是显示按钮,multiline告诉我们可以输入好几行,最后用fn这个回调函数接受我们想要得到的结果。

5.3.2. 再看一个例子呗

 

可能让我们对show这个方法的理解更深

Ext.MessageBox.show({
title:'随便按个按钮',
msg: '从三个按钮里随便选择一个',
buttons: Ext.MessageBox.YESNOCANCEL,
fn: function(btn) {
alert('你刚刚点击了 ' + btn);
}
});

我相信buttons这个参数是一个数组,里边的这个参数绝对了应该显示哪些按钮,Ext.MessageBox给我们提供了一些预先定义好的组合,比如YESNOCANCEL,OKCANCEL,可以直接使用。

5.3.3. 下一个例子是进度条

 

实际上只需要将progress这个属性设置为true,对话框里就会显示个条条。

Ext.MessageBox.show({
title: '请等待',
msg: '读取数据中',
width:240,
progress:true,
closable:false
});

看到进度条了吧,不过它可不会自动滚啊滚的,你需要调用Ext.MessageBox.updateProgress让进度条发生变化。

另外多说一句,closable: false会隐藏对话框右上角的小叉叉,这样咱们就不能随便关掉它了。

现在让咱们加上更新进度条的函数,使用timeout定时更新,这样咱们就可以看到效果了。呵呵~效果真不错,这样咱们以后就可以使用进度条了。

var f = function(v){
return function(){
if(v == 11){
Ext.MessageBox.hide();
}else{
Ext.MessageBox.updateProgress(v/10, '正在读取第 ' + v + ' 个,一共10个。');
}
};
};
for(var i = 1; i < 12; i++){
setTimeout(f(i), i*1000);
}

5.3.4. 动画效果,跳出来,缩回去

 

超炫效果,让对话框好像是从一个按钮跳出来的,关闭的时候还会自己缩回去。你可以看到它从小变大,又从大变小,最后不见了。实际上的配置缺非常简单,加一个animEl吧。让我们看看上边那个三个按钮的例子会变成什么样子。

Ext.MessageBox.show({
title:'随便按个按钮',
msg: '从三个按钮里随便选择一个',
buttons: Ext.MessageBox.YESNOCANCEL,
fn: function(btn) {
alert('你刚刚点击了 ' + btn);
},
animEl: 'dialog'
});

animEl的值是一个字符串,它对应着html里一个元素的id,比如<div id="dialog"></div>。指定好了这个,咱们的对话框才知道根据哪个元素播放展开和关闭的动画呀。

只需要这样,咱们就得到动画效果,嘿嘿,截不到动画效果的图,大家自己去看吧。

以上的例子在examples里都可以找到,不过咱们也提供了一份自己的例子,1.x在lingo-sample/1.1.1/05-01.html。2.0在lingo-sample/2.0/05-01.html。

好消息是,这部分的api没有什么改动。不过表现形式上有些差别,如果像我在例子里写的那样,一次生成N个MessageBox,只能显示最后一个对话框。

不过在1.x里明显有

[1] [2] 下一页



 [新手指南](5)Layout:ContainerLayout (佚名,03-06)
    如果学习了Container,你回发现,在Ext2.0中,Container和Layout的关系是密不可分的。任何Container都需要在render方法中使用layout对象进行布局。   让我们先看一下所有layout的父类:Con……

 [新手指南]ExtJs 学习准备工作 (未知,03-14)
最近要学习Extjs 但是编写javascrip如何没有一个ide是不行的。效率太低了于是从网上看到大家都说Aptana不错。Aptana 官方下载地址:http://ec2-67-202-39-119.compute-1.amazonaws.com/downloads/current/Window……

 [新手指南]Ext.data专题五:常用proxy (myext整理,04-11)
常用proxy1 MemoryProxyMemoryProxy只能从JavaScript对象获得数据,可以直接把数组,或JSON和XML格式的数据交给它处理,如下面的代码所示。var proxy = new Ext.data.MemoryProxy([[id1,name1,descn1],[id2,……

 [新手指南]认识ExtJS 1.2 ExtJS的前世今生 (myext整理,04-25)
1.2 ExtJS的前世今生  ExtJS来源于YUI,YUI是Yahoo! User Interface Library的简称,它是一个使用JavaScript编写的工具和控件库。最初只是在Yahoo内部使用,用来构建具有丰富用户体验的Web应用。这种内部的JavaScript工具与控件库几乎每个……

 [新手指南]Ext基础二:构成用户界面的元素 (myext整理,04-12)
构成用户界面的元素(1) 在接触一个完整的Ext组件之前,我们先了解构成这些组件的元素Ext.Element。正所谓磨刀不误砍柴工,最初接触Ext时不要急于开始可视界面的开发,而是应该进行一些Ext.Element与页面DOM的练习。这样做的目的主要是理解Ext中最基础的部分--元素,同时也训练自己……

 


©2008 MyExt.cn
本站文章来自互联网,仅供学习和研究使用,如有版权问题,请发送Email:myext@126.com.