extjs msg用法

1.Ext.MessageBox.alert()方法
有四个参数:alert( title , msg , function(){} ,this)
其中title,msg为必选参数,function为可选参数,在关闭弹出窗口后触发,可以传入点击的按钮的id,第四个参数scope:指回调函数作用域。

Ext.Msg.alert("Notice","hello world!");  //alert会阻塞程序的执行,而Ext版的alert是异步执行
Ext.Msg.alert(“Notice”,”<font color=red>hello world!</font>”); //支持html格式
Ext.Msg.alert(“Notice”,”<font color=red>hello world!</font>”,function callback(id){alert(‘您点的是’+id);});

2.Ext.MessageBox.confirm()方法

基本上同alert()方法一模一样。 注意这点:

Ext.MessageBox.confirm(“title“,“msg“,function(e){alert(e);});
这个参数e是什么?它是你点击的弹出框的按钮的值,三种值:yes,no,cancel. Alert()方法也是如此,不过只有两种值:ok,cancel.

回调函数可以传入一唯一参数:单击按钮的id,点击退出按钮也会触发此事件

3.Ext.MessageBox.prompt()方法
有五个参数,比前面alert方法多一个是否多行。

Ext.MessageBox.prompt(“title“,"msg");
Ext.Msg.prompt(‘Notice’,'请输入你的姓名:’,function callback(id,msg){alert(‘单击的按钮ID:’+id+’\n您输入的姓名是:’+msg);},this,false);
//输入”javachen”,点击ok按钮,弹出单击的按钮ID:OK 您输入的姓名是:javachen
Ext.MessageBox.prompt(“title“,“msg“,function(e,text){alert(e+“-“+text);},this,true);//true为多行,this表示作用域
4.Ext.MessageBox.show()方法
功能很强大,采用config配置形式,比前面的方法使用更方便。 参数很多,在此列举最常用的配置参数:

1.animEl:对话框弹出和关闭时的动画效果,比如设置为“id1”,则从id1处弹出并产生动画,收缩则相反
2.buttons:弹出框按钮的设置,主要有以下几种:Ext.Msg.OK,
Ext.Msg.OKCANCEL,
Ext.Msg.CANCEL,
Ext.Msg.YESNO,
Ext.Msg.YESNOCANCEL
你也可以自定义按钮上面的字:{“ok“,“我本来是ok的“}。 若设为false,则不显示任何按钮.
3.closable:如果为false,则不显示右上角的小叉叉,默认为true。
4.msg:“消息的内容“
5.title:“标题“
6.fn:关闭弹出框后执行的函数
7.icon:弹出框内容前面的图标,取值为Ext.MessageBox.INFO,
Ext.MessageBox.ERROR,
Ext.MessageBox.WARNING,
Ext.MessageBox.QUESTION
8.width:弹出框的宽度,不带单位
9.prompt:设为true,则弹出框带有输入框
10.multiline:设为true,则弹出框带有多行输入框
11.progress:设为true,显示进度条,(但是是死的)
12.progressText:显示在进度条上的字
13.wait:设为true,动态显示progress
14.waitConfig:配置参数,以控制显示progress
例子:
Ext.Msg.show({
title:’Notice’,
msg:’请输入您的姓名!’,
width:300,
prompt:true,
//multiline:true,
//wait:true,
//progress:true,
//progressText:’progressing’,
closable:true,
modal:true,

buttons:Ext.Msg.OKCANCEL,
icon:Ext.Msg.INFO
});



5.Ext.MessageBox.wait()
参数 msg:显示信息  title:标题      config:配置信息
例子:
Ext.Msg.wait(‘请等待,操作正在进行中’,'Notice’);
Ext.Msg.wait(‘请等待,操作正在进行中!’,'Notice’,
{
text:’processing’,
duration:2700,   //进度条在被重置前运行的时间
interval:300,        //进度条的时间间隔
increment:10,      //进度条的分段数量
fn:function callback(){
alert(“complete”);
}
});
6.Ext.MessageBox.hide()
把显示着的当前message box隐藏起来。
参数: 无.       Returns:   Ext.MessageBox
7.Ext.MessageBox.updateProgress()
Ext.MessageBox.updateProgress(value,”ProgressText”,”msg”)  //(三个参数,看名字就知道意思), 注意value为0-1之间的数,表示进度条的进度.


8.修改默认的按钮文字为中文
Ext.Msg.buttonText={
yes:' yes',
no:'否',
ok:'确定',
cancel:'取消'
};
Ext.Msg.buttonText.yes='是';
9.动态跟新提示框
1)跟新提示文字
var msgBox = Ext.MessageBox.show({
title:’提示’,
msg:’动态跟新的信息文字’,
modal:true,
buttons:Ext.Msg.OK
})
//Ext.TaskMgr是一个功能类,用来定时执行程序,
//在这里我们使用它来定时触发提示信息的更新。
Ext.TaskMgr.start({
run:function(){
msgBox.updateText(‘会动的时间:’+new Date().format(‘Y-m-d g:i:s A’));
},
interval:1000
});
2).跟新进度条及提示信息
var msgBox = Ext.MessageBox.show({
title:’提示’,
msg:’动态跟新的进度条和信息文字’,
modal:true,
width:300,
progress:true
})

var count = 0;//滚动条被刷新的次数
var percentage = 0;//进度百分比
var progressText = ”;//进度条信息

Ext.TaskMgr.start({
run:function(){
count++;   //刷新10次后关闭信息提示对话框
if(count > 10){
msgBox.hide();
}
//计算进度
percentage = count/10;
//生成进度条文字
progressText = ‘当前完成度:’+percentage*100 + “%”;
//更新信息提示对话框
msgBox.updateProgress(percentage,progressText,
‘当前时间:’+new Date().format(‘Y-m-d g:i:s A’));

},
interval:1000
});

<think> 我们遇到了一个Docker错误:`Cannot link to /trustie-kafka2, as it does not belong to the default network`。这个错误的原因是我们尝试使用`--link`参数连接一个不在默认网络(通常是`bridge`网络)中的容器。在Docker中,`--link`只能在同一个网络中的容器之间使用。 根据用户之前提供的docker-compose配置,我们使用了`links`来连接多个服务(如trustie-kafka2)。但在使用`docker run`单独启动容器时,如果这些被连接的容器不在同一个网络中,就会出现上述错误。 解决方案: 1. 确保所有容器都连接到同一个用户定义的网络(推荐)或者都在默认的bridge网络中(但默认bridge网络不支持通过容器名自动DNS解析,所以需要显式使用`--link`,而`--link`要求容器在同一个网络中)。 2. 在启动容器时,使用`--network`参数指定同一个网络。 具体步骤: 步骤一:创建一个自定义网络(如果还没有) ```bash docker network create mynet ``` 步骤二:启动依赖容器(如trustie-kafka2)时加入这个网络 例如,启动trustie-kafka2容器: ```bash docker run -d --name trustie-kafka2 --network mynet ... [其他参数] ... [镜像名] ``` 步骤三:启动当前容器(trustie-gns-reader)时也加入同一个网络,并去掉`--link`参数(因为在同一个网络中,可以直接通过容器名访问) ```bash docker run -d \ --name trustie-gns-reader \ --hostname trustie-gns-reader \ --network mynet \ # 加入同一个网络 -e TZ=Asia/Shanghai \ -p 58081:8081 \ -v /data/docker-data/microservices/notification/logs/:/data/logs/ \ -m 2048m \ --restart always \ trustie-gns-reader:1.0.0 ``` 注意:在同一个自定义网络中,容器之间可以通过容器名称(或容器启动时指定的`--name`)相互访问,因此不再需要`--link`。实际上,`--link`参数在用户自定义网络中已经不再推荐使用,因为Docker内置的DNS服务可以自动解析容器名称。 为什么这样可以解决问题? - 默认情况下,容器在默认的bridge网络中,但使用`--link`只能连接同一个默认bridge网络中的容器。如果被连接的容器不在同一个网络,就会报错。 - 使用用户自定义网络,容器可以通过名称自动发现,并且网络隔离性更好。 因此,我们建议将所有需要互通的容器放在同一个用户定义的网络中,这样就不需要`--link`了。 另外,根据引用的内容,在启动Kafka容器时也使用了`--link`,但同样建议使用自定义网络来替代。例如,引用[3]中启动kafka时链接了zookeeper容器,如果它们不在同一个网络,也会出现类似问题。所以,使用自定义网络是解决容器间通信的推荐方法。 总结解决方法: 1. 创建自定义网络(如果还没有)。 2. 启动所有容器(包括依赖容器)时都加入这个网络。 3. 移除`--link`参数,因为同一个网络中的容器可以通过容器名直接通信。 这样,错误即可解决。 注意:如果已经存在的容器需要加入网络,可以使用`docker network connect`命令。 例如,将已经运行的trustie-kafka2容器加入mynet网络: ```bash docker network connect mynet trustie-kafka2 ``` 但是,如果容器已经启动,可能需要重启容器以确保网络配置生效(特别是有些容器在启动时配置了网络相关的环境变量)。 因此,最稳妥的方式是停止并删除容器,然后重新启动并加入自定义网络。 §§相关问题§§ 1. 如何创建和管理Docker自定义网络? 2. 在同一个Docker网络中的容器如何相互通信? 3. 如何查看Docker容器的网络配置? 4. Docker容器间通信有哪些方式? </think> ### 解决 Docker "Cannot link to /trustie-kafka2" 网络错误 这个错误是因为您尝试使用 `--link` 连接不同 Docker 网络中的容器。当容器不在同一网络时,Docker 无法建立链接。以下是完整的解决方案: #### 根本原因分析 1. `trustie-kafka2` 容器不属于默认的 `bridge` 网络 2. 使用 `--link` 时要求所有容器必须在同一网络 3. Docker 默认网络隔离策略导致跨网络访问失败 #### 解决方案(推荐) ```bash # 1. 创建自定义网络 docker network create trustie-net # 2. 启动所有相关容器时加入同一网络 docker run -d --network trustie-net --name trustie-kafka2 [其他参数] kafka-image docker run -d --network trustie-net --name trustie-gns-reader [其他参数] reader-image # 3. 在容器中使用服务名直接访问(无需--link) # 例如:在trustie-gns-reader中访问kafka:trustie-kafka2:9092 ``` #### 替代方案(适用于已存在容器) ```bash # 1. 查看容器当前网络 docker inspect trustie-kafka2 | grep Network # 2. 将trustie-gns-reader连接到相同网络 docker network connect [trustie-kafka2所在网络名] trustie-gns-reader # 3. 重启reader容器使配置生效 docker restart trustie-gns-reader ``` #### 验证步骤 ```bash # 进入容器测试连通性 docker exec -it trustie-gns-reader sh # 在容器内执行 ping trustie-kafka2 nc -zv trustie-kafka2 9092 ``` #### 最佳实践建议 1. **使用自定义网络替代--link**(Docker 官方推荐) ```bash # 创建网络 docker network create app-network # 启动服务时指定网络 docker run -d --network app-network --name service1 ... docker run -d --network app-network --name service2 ... ``` 2. **使用DNS服务发现**(替代静态链接) ```bash # 在应用配置中直接使用容器名 kafka.bootstrap.servers=trustie-kafka1:9092,trustie-kafka2:9092 ``` 3. **避免使用默认bridge网络**(因其存在限制)[^1] #### 故障排查技巧 ```bash # 1. 查看容器网络信息 docker inspect trustie-kafka2 | grep -A 15 "Networks" # 2. 检查容器DNS解析 docker exec trustie-gns-reader cat /etc/hosts # 3. 测试网络连通性 docker run --rm --network container:trustie-gns-reader alpine ping trustie-kafka2 ``` > **关键点**:Docker 在用户自定义网络中提供自动 DNS 解析,使容器能通过名称相互访问(如 `trustie-kafka2`),无需 `--link` 参数[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值