我需要知道在一个ext formPanel中是否存在一个boxComponent才能采取某些行动......有没有办法知道这一点? 像这样的东西:
if(getElementById("boxId") != 'undefined' ){
alert('exists');
}
答案 0 :(得分:16)
大多数人使用的常见模式是:
var myBoxCmp = Ext.getCmp('cmpId');
if(myBoxCmp){
myBoxCmp.doSomething();
}
元素相同:
var el = Ext.get('elId');
if(el){
el.doSomething();
}
你也可以使用像Container.findById
这样的方法,但是如果你有一个id(假设它是唯一的,那应该是),只需使用getCmp
。
getCmp
通常不赞成code smell,应该通常在应用程序中避免使用(促进全局引用,这通常表明设计时很差)他们是必需的)。通常最好使用控制器引用(如果使用MVC)或各种ComponentQuery或Container方法来引用相关组件(例如down,child,getComponent等。)
答案 1 :(得分:3)
我只是使用extjs方式,我不喜欢使用getElementById()这是一个原生的js方法,可能会导致diffrenet浏览器出现不兼容问题:
if (!Ext.getCmp('componentid')) {
alert('boxId is empty');
}
答案 2 :(得分:0)
您可以使用Ext.get('boxId')
。如果对象不存在则返回null
并返回Ext.Element
对象。
使用getElementById
可能要快得多。你对此有任何具体的反对意见吗?
答案 3 :(得分:0)
使用Ext.isEmpty(object)方法。
if(Ext.isEmpty(getElementById("boxId")) {
alert('boxId is empty');
}
答案 4 :(得分:0)
function openView(cid) {
shortName = cid.substr(cid.lastIndexOf(".")+1, cid.length);
if(Ext.get(shortName) == null) Ext.create(cid);
Ext.Viewport.setActiveItem(Ext.getCmp(shortName));
}
此功能打开一个类似
的视图openView('MyApp.view.Oeffnungszeiten');
如果View存在,则访问旧实例