调用错误的方法ExtJS

时间:2014-03-24 15:21:15

标签: javascript extjs

我有这段代码:

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事件期间显示在控制台日志中,然后如果我单击应该有单击方法的菜单项,则没有任何反应。

我想知道原因。

1 个答案:

答案 0 :(得分:1)

new ifAuthorizing('import')

此处operator new 尝试创建一个对象并将ifAuthorizing解释为构造函数。立即调用构造函数,这就是它在beforeRender事件中触发的原因。因此,您获得了一些不是函数副本的对象ifAuthorizing,因此无法在具有所需结果的菜单项事件上调用它。