【问题标题】:Unable to catch any events in a controller无法捕获控制器中的任何事件
【发布时间】:2015-07-06 20:40:13
【问题描述】:

首先,我有这个文件结构:

Module1/
init.js
    store/
      ...
    view/
      Module1Panel.js
    controller/
      Module1Controller.js

Module2/
init.js
    store/
      ...
    view/
      Module2Panel.js
    controller/
      Module2Controller.js

在 Module1 中,我像这样加载 Module2:

#module1/init.js
...
Ext.application({
    paths:{
        'Module2':'/app/Module2'   
    },
    ...
    controllers:['Module1Controller','Module2.controller.Module2Controller']
});

由于我在控制台中看到的所有这些,所有控制器、所有视图、所有商店和模型都已加载。目前一切看起来都很完美,除了一件令人讨厌的事情——Module2 的控制器没有捕捉到任何事件。我的意思是,我不能让这段代码工作

#Module2Controller.js
...
init:function(){
    this.control({
        'Module2Panel button[itemId=test2]':{
             click:this.click(); 
        }
    });
    console.log('Hello from init'); //this works
},
click:function(){
    console.log('Hello from click'); //this does not work on button click
}

我想我知道控制器应该如何工作。至少,Module1controller 可以完美运行。我逐点逐行进行。所以,我认为不应该有任何重大错误。否则,我不会看到我所有的控制器、视图、商店和模型都在加载。请告诉我如何调试我的代码并捕获错误。 PS。我想,Module2只有一个特别的地方,那就是它是从Module1加载的。因此,它不是一个“普通”模块,因此可能存在一些缺失的初始化步骤。

【问题讨论】:

    标签: extjs model-view-controller


    【解决方案1】:

    定义不调用它们的事件处理程序。只需定义。所以,替换

    click:this.click();
    

    click: this.click
    

    【讨论】:

    • 是的,有一个错误。 +1 为你,-1 为我 =)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 2013-02-02
    • 2014-11-05
    • 2018-02-07
    • 2018-01-19
    相关资源
    最近更新 更多