重庆熊猫 Loading

ExtJS - UI组件 - MessageBox

更新记录
转载请注明出处:https://www.cnblogs.com/cqpanda/p/16587505.html
2022年8月17日 发布。
2022年8月13日 从笔记迁移到博客。

ExtJS教程汇总:https://www.cnblogs.com/cqpanda/p/16328016.html

MessageBox说明

Message Box常用于显示文本说明
使用Ext.window.MessageBox类实现,可以使用快捷方式Ext.MessageBox
Ext.Msg是Ext.window.MessageBox类的预定义的单例实例
注意:ExtJS中的消息框不会阻塞代码运行,如果需要阻塞可以使用回调函数

常用消息框类型

Alert(警告框):
Displays a standard read-only message box with an OK button.
Confirm(确认框):
Displays a confirmation message box with Yes and No buttons.
Confirm message box displays message with Yes and No buttons
You can also capture users click event for further process.
Prompt(文本输入框):
Displays a message box with OK and Cancel buttons prompting the user to enter some text (similar to JavaScript's prompt). It can be a single-line or multi-line textbox.
Custom(自定义):
Customized message box style.

语法

提示框(Alert)

提示框(Alert)

Ext.Msg.alert('标题', '内容');

注意:因为MessageBox是单例的,如果同时显示多个消息框将显示最后一个

Ext.Msg.alert('Title', 'Basic message box in ExtJS');

还可以自己实例化MessageBox类

var msg = Ext.create('Ext.window.MessageBox');
msg.alert('Status', 'This is Ext JS message box.');

实例:点击按钮显示提示框(Alert)

Ext.create('Ext.button.Button',{
    text: '点击我',
    renderTo: Ext.getBody(),
    listeners: {
        click: function() {
            Ext.Msg.alert('标题', '这是MessageBox的内容');
        }
    }
});

确认选择(Confirm)

确认选择(Confirm)

Ext.MessageBox.confirm('标题', '内容', optional callbackFunction());

或者

Ext.Msg.confirm("Confirmation", "Do you want to Save changes?", function(btnText){
    if(btnText === "no"){
        Ext.Msg.alert("Alert", "You have confirmed 'No'.");
    }
    else if(btnText === "yes"){
        Ext.Msg.alert("Alert", "You have confirmed 'Yes'.");
    }
}, this);

点按钮显示确认框(Confirm)

Ext.create('Ext.button.Button',{
    text: '点击我',
    renderTo: Ext.getBody(),
    listeners: {
        click: function() {
            Ext.MessageBox.confirm('确认',"内容说明", function(btn){
                if(btn === 'yes')
                {
                    console.log('选择了确定Yes');
                }
                else
                {
                    console.log('选择了确定No');
                }
            });
        }
    }
});

显示选择框

Ext.Msg.confirm('Confirm', 'Are you want to updates?',
    function (button) {
        if ('yes' == button) {
            console.log('yes')
        } else {
            console.log('no')
        }
    }
);

输入框(Prompt)

填写内容(单行)(Prompt)

Ext.Msg.prompt('标题', '说明', function(button,userInputContext){
    console.log(button);    //用户点击的按钮
    console.log(userInputContext)   //用户输入的内容
});

实例:

Ext.Msg.prompt("Ext JS Tutorials", "Please enter your Sencha Id:", function(btnText, sInput){
    if(btnText === 'ok'){
        Ext.Msg.alert("Status", "You entered:" + sInput);
    }
}, this);

显示用户输入框(单行)

Ext.Msg.prompt('标题', '说明', function(button,userInputContext){
    console.log(button);    //用户点击的按钮
    console.log(userInputContext); //用户输入的内容
});

显示用户输入框(多行)

Ext.MessageBox.show ({
    title: '标题',
    msg: '请输入内容:',
    width: 300,
    buttons: Ext.MessageBox.OKCANCEL,
    multiline: true,
    //fn: callbackFunction
});

等待进度框(Wait)

格式

Ext.MessageBox.wait({});

实例:创建一个等待进度条

Ext.MessageBox.wait('内容', '标题');

实例:更多配置参数

Ext.Msg.wait('内容', '标题', {
    interval: 400, //循环定时的间隔
    duration: 2000,//总时长
    increment: 5,    //执行进度条的次数
    text: '更新中,请稍后...', //进度条上的文字
    scope: this,        //作用域
    animate: true,		//加入动画
    fn: function () {   //执行完成后执行的函数
        console.log(123);
    }
});

消息框-自定义消息框

格式

Ext.MessageBox.show ({
   title: '标题',
   msg: '提示语:',
   width: 300,
   buttons: Ext.MessageBox.OKCANCEL,
   multiline: true,  // this property is for multiline user input.
   fn: callbackFunction,
	icon: Ext.Msg.QUESTION
});

Buttons属性表示要显示的按钮,可取值:

Ext.MessageBox.OK
Ext.MessageBox.CANCEL
Ext.MessageBox.OKCANCEL
Ext.MessageBox.YESNO
Ext.MessageBox.YESNOCANCEL

buttonText属性用于设置自定义按钮显示的文本:

buttonText:
{
    yes : '保存',
    no : '不保存',
    cancel : '取消'
}

icon属性用于设置显示的图标

Ext.MessageBox.QUESTION
Ext.MessageBox.WARNING
Ext.MessageBox.ERROR
Ext.MessageBox.INFO

实例:显示一个退出提示框

Ext.Msg.show({
    title : '保存',
    msg : '是否将修改保存到系统中?',
    width : 300,
    closable : false,
    buttons : Ext.Msg.YESNOCANCEL,
    buttonText : 
    {
        yes : '保存',
        no : '不保存',
        cancel : '取消'
    },
    multiline : false,
    fn : function(buttonValue, inputText, showConfig){
        Ext.Msg.alert('Status', buttonValue);
    },
    icon : Ext.Msg.QUESTION
});

实例:Yes NO Cancel三选

Ext.MessageBox.show ({
    title: '标题',
    msg: '请输入内容:',
    width: 300,
    buttons: Ext.MessageBox.YESNOCANCEL,
    multiline: true,
    fn:function(btn,text){
        console.log(btn);
        console.log(text);
    }
});

实例:设置提示图标

Ext.MessageBox.show({
    title:'Save Changes?',
    msg: 'Do you want to save the file?',
    buttons: Ext.MessageBox.YESNO,
    fn: function(button){
        if('yes'==button)
        {
        
        }
        else if('no'==button)
        {
        }
    } ,
    icon: Ext.MessageBox.QUESTION
});

实例:简单消息框

Ext.MessageBox.show({
    title: 'Save Changes?',
    msg: 'Do you want to save the file?',
    buttons: Ext.MessageBox.YESNO,
    fn: function (button) {
        if ('yes' == button) {

        } else if ('no' == button) {}
    },
    icon: Ext.MessageBox.QUESTION
});

实例:消息框内放置进度条

使用progress属性开启进度条
使用progressText属性设置进度条的文本
使用.updateProgress方法更新进度条

//显示进度条
var progressMessage = Ext.MessageBox.show({
    title: '加载中',
    msg: 'Panda Messagebox',
    progress: true,
    progressText: '进度条中的文本',
    width: 300,
    closable: true
});

//更新进度条
var step = 1;
function updateProgress(){
    if(step >= 100)
    {
        progressMessage.updateProgress(100,'完成!');
        progressMessage.hide();
    }
    else
    {
        progressMessage.updateProgress(step++/100,'加载中... ' + step + '%');
    }

    Ext.defer(updateProgress, 10);
}

Ext.defer(updateProgress, 10);
posted @ 2022-08-17 07:44  重庆熊猫  阅读(304)  评论(0编辑  收藏  举报