我有这段代码:
listeners:
{
beforerender: function()
{
if (importButton == true)
{
this.menu.add(
{
text: 'Import',
iconCls: 'importIcon',
listeners:
{
click: new ifAuthorizing('import')
}
})
}
this.menu.add(
{
text: 'Consultation',
iconCls: 'searchIcon',
listeners:
{
click: menuConsultation
}
})
}
}
当某些条件合适时,应该将项目添加到菜单中。
它正常工作,如果条件匹配,按钮会很好地添加。
问题来自
listeners:
{
click: new ifAuthorizing('import')
}
此侦听器应该附加到菜单项,但它在其父项的beforerender事件期间被触发。
function ifAuthorizing(arg) {
console.log('import')
}
'导入'在beforerender事件期间显示在控制台日志中,然后如果我单击应该有单击方法的菜单项,则没有任何反应。
我想知道原因。
答案 0 :(得分:1)
new ifAuthorizing('import')
此处operator new 尝试创建一个对象并将ifAuthorizing解释为构造函数。立即调用构造函数,这就是它在beforeRender事件中触发的原因。因此,您获得了一些不是函数副本的对象ifAuthorizing,因此无法在具有所需结果的菜单项事件上调用它。