extjs4 用Ext.create()创建MessageBox时,提示‘buttons为空或不是对象’
用Ext.MessageBox.show()则不会出现这个问题vargrid=Ext.create('Ext.window.MessageBox',{title:'Sav...
用Ext.MessageBox.show()则不会出现这个问题
var grid = Ext.create('Ext.window.MessageBox', {
title:'Save Changes?',
msg: 'You are closing a tab that has unsaved changes. Would you like to save your changes?',
buttons: Ext.Msg.YESNOCANCEL,
icon: Ext.Msg.QUESTION,
autoShow:true
}); 展开
var grid = Ext.create('Ext.window.MessageBox', {
title:'Save Changes?',
msg: 'You are closing a tab that has unsaved changes. Would you like to save your changes?',
buttons: Ext.Msg.YESNOCANCEL,
icon: Ext.Msg.QUESTION,
autoShow:true
}); 展开
1个回答
展开全部
注意,Ext.window.MessageBox是单例的,跟java里的单例模式一样,直接使用就可以,没有createde的,例如:
Ext.Msg.alert('Status', 'Changes saved successfully.');
看一下api,Ext.window.MessageBox前面有个图标,带有那个图标的都是单例的!
他的api有说明,MessageBox可以模拟alert,prompt等简单的弹出窗口,配置参数有限,如果要用复杂的,可以使用show方法!
Ext.Msg.alert('Status', 'Changes saved successfully.');
看一下api,Ext.window.MessageBox前面有个图标,带有那个图标的都是单例的!
他的api有说明,MessageBox可以模拟alert,prompt等简单的弹出窗口,配置参数有限,如果要用复杂的,可以使用show方法!
更多追问追答
追问
上面没有写Ext.window.MessageBox是单例,Ext.MessageBox是它的单例。
追答
Ext.window.MessageBox是一个类,单例的类,Ext.MessageBox是他的实例对象,可以简写为Ext.Msg。
搞清类和对象的关系!你create一百遍Ext.window.MessageBox,实例还是那一个!
我说的这个的意思是:Ext.window.MessageBox一般不会让你来create,也没有那么写的!
当然你可以create,java里叫new,但是你应该知道单例模式的实现原理,他的构造方法是私有的,不是你能直接实例化,如果你能直接随便的实例化,那怎么能是单例呢!单例模式必须由他自己实例化了把唯一的实例返回给你用!说白了,他的实例化方法就是show方法!也就是说,他的public方法show里调用了自己的构造方法,返回值就是Ext.MessageBox。你要传更多的属性,ext里叫配置参数,只能传递给show方法,show方法调用私有构造方法的时候会传递给他!
这样说你明白了吗?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询