• 深入浅出ExtJS 第七章 弹出窗口


    7.1 Ext.MessageBox
     1 7.1 Ext.MessageBox
     2   //Ext.MessageBox为我们提供的alert/confirm/prompt等完全可以代替浏览器原生;
     3 7.1.1 Ext.MessageBox.alert()
     4   Ext.MessageBox.alert('标题','内容',function(btn){
     5     //参数一:窗口的标题;
     6     //参数二:窗口的内容;
     7     //参数三:回调函数;
     8     alert('你刚刚点击了'+btn);
     9   });
    10 
    11 7.1.2 Ext.MessageBox.confirm()
    12   //confirm为用户提供了Yes和No,它们会在需要用户作出判断时用到;
    13   Ext.MessageBox.confirm('选择框','你要选择yes还是no?',function(btn){
    14     alert('你刚刚点击了'+btn);
    15   });
    16   //用户选择Yes或No之后,回调函数即被调用,btn参数的值可能是yes或no,通过得到的值就可以知道用户点击了哪个按钮;
    17 
    18 7.1.3 Ext.MessageBox.prompt()
    19   //prompt允许用户输入一段字符串,然后提交给JS处理;
    20   //prompt还提供了两个按钮,用户可以决定是否将输入的内容提交;
    21   Ext.MessageBox.prompt('输入框','你输入帐号',function(btn,text){
    22     alert('你刚刚点击了'+btn+',你刚刚输入了'+text);
    23   });
    24   //回调函数参数一:代表用户点击的按钮;
    25   //回调函数参数二:用户输入的字符;
    7.2 对话框的更多配置--show()
     1 7.2 对话框的更多配置--show()
     2 7.2.1 可以输入多行的输入框
     3   Ext.MessageBox.show({
     4     title:'多行输入框',       //对话框标题;
     5     msg:'你可以输入好几行',   //对话框显示的提示内容;
     6     300,
     7     buttons:Ext.MessageBox.OKCANCEL,  //对话框的按钮,Ext.MessageBox已预置;
     8     multiline:true,           //允许多行;
     9     fn:function(btn,text){    //回调函数;
    10       alert('你刚刚点击了'+btn+',你刚刚输入了'+text);
    11     }
    12   });
    13 
    14 7.2.2 自定义对话框的按钮
    15   Ext.MessageBox.show({
    16     ...
    17     buttons:Ext.MessageBox.YESNOCANCEL,
    18     //Ext.MessageBox预置的yes/no/cancle按钮;
    19     ..
    20   });
    21 
    22 7.2.3 进度条
    23   //Ext.MessagesBox提供了默认的进度条;
    24   Ext.MessageBox.show({
    25     title:'请等待',
    26     msg:'读取数据中',
    27     240,
    28     progress:true,        //显示进度条参数;
    29     closable:false        //隐藏右上角的关闭按钮;
    30   });
    31   var f = function(v){
    32     return function(){
    33       if(v == 11){
    34         Ext.MessageBox.hide();
    35       }else{
    36         Ext.MessageBox.updateProgress(v/10,'正在读取第'+v+'个,一共10个');
    37         //updateProgress()函数让进度条状态发生变化;
    38       }
    39     };
    40   };
    41   for(var i=1; i<12; i++){
    42     setTimeout(f(i),i*1000); 
    43     //定时器;10秒之后进度条将隐藏;
    44   }
    45   //也可以直接使用progress函数↓↓↓↓↓
    46   Ext.MessageBox.progress('请等待',msg:'读取数据中');
    47   >2.自动变化的进度条提示框
    48   Ext.MessageBox.wait('请等待',msg:'读取数据中');
    49 
    50 7.2.4 动画效果
    51   //使用animEl:为对话框设置弹出和关闭的动画效果;
    52   //对话框会依据指定的HTML元素播放弹出和关闭的动画;
    53   Ext.MessageBox.show({
    54     ...
    55     animEl:'dialog'
    56     //对应动画是基于id='dialog'的元素;
    57   });
    58 
    59 //Ext.MessageBox =Ext.Msg
    60 //Ext.Msg弹出的对话框都是基于同一个内部Ext.Window实例;因此不能同时使用Ext.MessageBox弹出多个对话框;页面只会显示最后一个窗口;

    7.3 Ext.Window的常用属性

     1 7.3 Ext.Window的常用属性
     2 7.3.1 创建窗口--Ext.Window
     3   var win = new Ext.Window({
     4     layout:'fit',       //弹出窗口内布局会充满整个窗口;
     5     500,          //设置窗口大小;
     6     height:300,
     7     closeAction:'hide', //点击右上角关闭按钮后会执行的操作;
     8     closable:false,     //隐藏关闭按钮;
     9     draggable:true,     //窗口可拖动;
    10     items:[{}],         //默认会生成Ext.Panel类型的对象;并且随窗口大小改变而改变;
    11     buttons:[{
    12       text:'按钮'
    13     }]
    14   });
    15   win.show();
    16   //closeAction:'hide':关闭窗口时执行隐藏命令,之后还可以使用show()函数显示刚刚关闭的窗口;
    17   //closeAction:'close':关闭窗口时把窗口对象销毁;不能再执行show()了;
    18 
    19 7.3.1 窗口的最大化和最小化
    20   var win = new Ext.Window({
    21     ..
    22     minimizable:true,   //窗口最小化按钮; 需重写minimize()函数;
    23     maximizable:true    //窗口最大化按钮;
    24   });
    25 
    26 7.3.3 窗口的隐藏与销毁
    27   >1.closeAction:'close'
    28     //关闭窗口时,Ext会将窗口对象和其对应的DOM模型完全销毁,销毁之后的窗口无法通过调用show()函数显示到页面上;
    29   >2.closeAction:'hide'
    30     //关闭窗口时,自动隐藏,之后可以通过show()显示出来;
    31   >3.Ext.Window.hide()/.show()
    32     //调用自定义函数替代closable;
    33   >4.closable:false     //隐藏关闭按钮;
    34 
    35 7.3.4 防止窗口超出浏览器边界
    36   >1.constrain:true
    37     //保证整个窗口不会越过浏览器的边界;
    38   >2.constrainHeader:true
    39     //值保证窗口的顶部不会越过浏览器的边界;
    40 
    41 7.3.5 设置窗口中的按钮
    42   //通过buttons参数指定窗口下部的按钮
    43   var win = new Ext.Window({
    44     ...
    45     defaultButton:0,      //默认第一个按钮为选中状态,Enter键即可提交;
    46     buttons:[{
    47       text:'确定',
    48       handler:function(){ //点击后隐藏窗口;
    49         win.hide();
    50       }
    51     },{
    52       text:'取消'
    53     }]
    54   });
    55   win.show();
    56 
    57 7.3.6 窗口的其他配置选项
    58   //通过resizable:控制窗口是否可以通过拖放改变大小;
    59   //通过resizeHandles:设置可拖拽的角度控制点;
    60   var win = new Ext.Window({
    61     300,
    62     height:100,
    63     closeAction:'hide',
    64     resizable:true,         //窗口可拖动改变大小;
    65     resizeHandles:'se',     //south-east:右下角可拖动;
    66     modal:true,             //设置弹窗之后屏蔽掉页面上所有的其他组件;
    67     animateTarget:'target', //Ext弹窗从指定的HTML元素弹出或关闭窗口动画;
    68     plain:true              //使窗体主体更融于框架颜色;
    69   });
    70   Ext.get('target').on('click',function(){
    71     win.show();
    72   })
    73   <button id="target">target</button>

    7.4 窗口分组

     1 7.4 窗口分组
     2   //在Ext中,窗口是分组进行管理的,可以对某一组中的窗口执行特定的操作;
     3   //窗口都在Ext.WindowMgr组中;窗口分组由Ext.WindowGroup类定义;
     4   var i = 0;
     5   function newWin() {         //自定义创建窗口函数;
     6     var id=i++;
     7     var win=new Ext.Window({  //创建窗口;
     8       headerPosition:'top',   //窗口标题的方位;
     9       title:'窗口'+id,
    10       400,
    11       height:300,
    12       maximizable:true        //窗口最大化;
    13     });
    14     win.show();
    15   };
    16   function toBack() {         //窗口层最后;
    17     Ext.WindowManager.sendToBack(Ext.windowManager.getActive());
    18     //WindowManager:窗口组;
    19     //getActive():当前最顶层窗口;
    20   };
    21   function hideAll() {        //隐藏所有窗口;
    22     Ext.WindowManager.hideAll();
    23   };
    24   Ext.onReady(function(){
    25     Ext.get('btn').on('click',newWin);    //点击按钮触发函数;
    26     Ext.get('btnToBack').on('click',toBack);
    27     Ext.get('btnHide').on('click',hideAll);
    28   });

    7.5 向窗口中放入各种控件

     1 7.5 向窗口中放入各种控件
     2 //窗口(window)继承自Ext.Panel;支持在内部嵌套其他组件;
     3 7.5.1 在窗口中加入表格
     4   //创建表格后不必render(),而是直接加入窗口的items参数中;
     5   //窗口会在显示时自动渲染内部的组件;
     6   var columns = [...];
     7   var data = [...];
     8   var store = new Ext.data.ArrayStore({...});
     9   store.load();
    10   var grid = new Ext.grid.GridPanel({
    11     store:store,
    12     columns:columns,
    13     layout:'fit'
    14   });
    15   //表格初始化↑↑↑↑;并且没有进行render();
    16   var win = new Ext.Window({
    17     layout:'fit',
    18     500,
    19     height:300,
    20     closeAction:'hide',
    21     items:[grid],           //在弹窗中嵌套表格;
    22     buttons:[{text:'按钮'}]
    23   });
    24 
    25 7.5.2 在窗口中加入表单
    26   //在form中去掉title参数;在window里设置;
    27   //没有设置form的宽和高,它会根据外部窗口的大小;
    28   var form = new Ext.form.FormPanel({
    29     defaultType:'textfield',
    30     items:[{
    31       fieldLabel:'文本',
    32       name:'text'
    33     },{
    34       fieldLabel:'日期',
    35       name:'data',
    36       xtype:'datafield'
    37     }]
    38   });
    39   var win = new Ext.Window({
    40     layout:'fit',
    41     title:'嵌套表单',
    42     items:[form],         //嵌入表单;
    43     buttons:[{text:'按钮'}]
    44   });
    45   win.show();
    46   
    47 7.5.3 复杂布局
    48   //左侧可折叠nav,中间是Tab页;
    49   var tabs = new Ext.TabPanel({
    50     region:'center',    //BorderLayout布局的中间;
    51     margins:'3 3 3 0',
    52     activeTab:0,
    53     defaults:{autoScroll:true},
    54     items:[{
    55       title:'默认',
    56       html:'tab1'
    57     },{
    58       title:'可关闭标签',
    59       html:'tab2',
    60       closable:true
    61     }]
    62   });
    63   var nav = new Ext.Panel({
    64     title:'可折叠导航',
    65     region:'west',      //BorderLayout布局的左侧;
    66     split:true,
    67     collapsible:true,
    68     margins:'3 0 3 3',
    69     cmargins:'3 3 3 3'
    70   });
    71   var win = new Ext.Window({
    72     title:'窗口嵌套可折叠和Tabs',
    73     layout:'border',    //为窗口指定BorderLayout布局;
    74     closable:true,
    75     600,
    76     height:350,
    77     border:false,
    78     items:[nav,tabs]  //引入nav和tabs;
    79   });
    80   win.show();
  • 相关阅读:
    Windows 下安装 swoole 具体步骤
    Mysql 连接提示 Client does not support authentication protocol requested by server 客户端不支持服务器请求的身份验证协议;考虑升级MySQL客户端
    mysql8 安装
    在 apache 配置 python-django
    QQWry.dat导入Mysql显IP程序
    PHP根据身份证号码判断星座性别生肖身份证号15位转18位
    layer---table 处理 方法设定使用 时间戳转换
    数字的处理 :小数点四舍五入
    javascript 检测手机设备 百度siteapp下的一款跳转的产品,使用起来很方便。你可以用这款JS跳转到手机版,也可以跳转到任何你想跳转的位置。
    基于Token的多平台身份认证价格设计
  • 原文地址:https://www.cnblogs.com/yizihan/p/4264375.html
Copyright © 2020-2023  润新知