EXTJS 加入中文包后的 Ext.MessageBox = Ext.Msg 依然是英文的BUG

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 17:31   1726   0
目的:是Ext的提示框使用中文按钮

现象:当用户加载ext中文包,但是Ext.MessageBox ,Ext.Msg的时候依然是英文的button


源码: Ext.MessageBox = Ext.Msg = new this();


if(Ext.MessageBox){
Ext.window.MessageBox.prototype.buttonText = {
ok: "确定",
cancel: "取消",
yes: "是",
no: "否"
};
}


结论:综合分析后就不难得出,因为Ext.MessageBox = Ext.Msg全局对象已经在导入中文包之前已就已经生成了,所以后来的中文包就无法作用了(这里做一个猜测,没有去验证有兴趣的人可以自己验证了,虽然源代码是修改了该类的prototype对象,但是实例化的对象不是直接调用该值去生成弹出窗口,而是实例化对象的时候已经把该buttonText参数闭包给某些方法了)

解决方案:

if(Ext.MessageBox){
Ext.window.MessageBox.prototype.buttonText = {
ok: "确定",
cancel: "取消",
yes: "是",
no: "否"
};
Ext.MessageBox = Ext.Msg = new Ext.window.MessageBox();
}

只需要在中文包里重新生成下该对象即可




分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP