我知道这可能是一个奇怪的问题,我无法通过id找到我自己的项目。请允许我解释什么,我试图做...ExtJS扩展组件,无法做到这一点.findById()
以下是可能的...
var myMenu = new Ext.menu.Menu({
id: "my-menu",
items: [{
id: "first-item",
text: "hello"
}]
});
当我做到这一点...
myMenu.findById('first-item'); // it will return a component...
然而,当我尝试以这种方式扩展它...
NewMenu = Ext.extend(Ext.menu.Menu, {
id: "",
win_id: "",
initComponent: function(){
// All the neccessary code
},
onRender: function(){
// codes...
},
// Override the add function
add: function(){
this.findById(this.win_id); // return NULL
}
});
对不起,我缺少的代码。我明白,它可能是对象在添加项目后未呈现的行,因此它将返回NULL。有什么办法可以做到吗?我使用ExtJS 3.0因此,没有“onAdd”方法来覆盖。不确定它会有帮助。
让我知道如果我错过任何impt信息。
欢呼和感谢一万, 米奇
哎呀,是我不好......代码工作完全正常,如无差错在Firebug除了当我做添加动作,它this.findById的执行过程中返回null()。任何提示? – 2010-01-12 14:36:35
实际上,我在.on('show',function(){/ * ... here ... * /})中使用“this.findById(this.win_id)”的返回值。稍后当窗口触发事件显示时将使用它。简而言之,在添加一个项目之后,我会附加一个监听器,这样当窗口触发时,它会回到添加的项目并对其进行操作。 – 2010-01-13 00:40:44