Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在ExtJS 4中使用单击处理程序调用函数_Javascript_Extjs_Extjs4 - Fatal编程技术网

Javascript 在ExtJS 4中使用单击处理程序调用函数

Javascript 在ExtJS 4中使用单击处理程序调用函数,javascript,extjs,extjs4,Javascript,Extjs,Extjs4,我在工具栏中有一个函数,我们称之为: Ext.define('MyArchive.Toolbar', { search: function() { console.log('searching'); } } 现在我想在单击按钮时调用此函数。因此,我在工具栏设置的afterRender中添加了一些单击处理程序: afterRender: function() { Ext.getCmp('search-button').on('click', this.search); }

我在工具栏中有一个函数,我们称之为:

Ext.define('MyArchive.Toolbar', { 
  search: function() {
    console.log('searching');
  }
}
现在我想在单击按钮时调用此函数。因此,我在工具栏设置的afterRender中添加了一些单击处理程序:

afterRender: function() {
  Ext.getCmp('search-button').on('click', this.search);
} 
但是,这不起作用,我最终需要走完整的路线:

afterRender: function() {
  Ext.getCmp('search-button').on('click', function() {
    quick_search();
  )};
}
我的第一次尝试没有像我预期的那样应用click处理程序,有什么特别的原因吗

感谢您的解释或重构!欢迎使用其他模式/习惯用法…

下次尝试:

    var panelOverall = new Ext.form.FormPanel({
    html: 'bla',
    search: function() {
        console.log('searching');
    },
    buttons: [
        {
            text: 'Moo',
            id: 'button1',
            handler: function(){
                //window.destroy();
            }
        }
    ],
    afterRender: function() {
        Ext.getCmp('button1').on('click', this.search);
    } 
});
他在为我工作。。我遗漏了什么吗?

下一次尝试:

    var panelOverall = new Ext.form.FormPanel({
    html: 'bla',
    search: function() {
        console.log('searching');
    },
    buttons: [
        {
            text: 'Moo',
            id: 'button1',
            handler: function(){
                //window.destroy();
            }
        }
    ],
    afterRender: function() {
        Ext.getCmp('button1').on('click', this.search);
    } 
});

他在为我工作。。我遗漏了什么吗?

我们需要看更多的代码。例如,您到底在哪里调用
xt.getCmp('search-button')。on…
?顺便说一句:
Ext.getCmp()
虽然看似简单,但并不是获取对象的最佳方式。过于依赖它会使改变变得更加困难。我对这个问题加了一句赞扬的话。对于查找访问所需属性的组件,除了Ext.getCmp()之外,最好的替代方法是什么?有什么我应该遵循的模式或习惯用法吗?你能删除多余的dort吗?^^Ext.getCmp('search-button')。on.(变成Ext.getCmp('search-button')。on(抱歉,拼写错误已经被修复…在这种情况下,jsfiddle.net可能有助于直接显示代码。假设它支持ExtJS。我们需要查看更多代码。例如,您在哪里调用
xt.getCmp('search-button')。on…
?顺便说一句:
Ext.getCmp()
虽然看似简单,但这并不是获取对象的最佳方式。过于依赖它会使更改更加困难。我在问题中添加了一个建议。什么是Ext.getCmp()的最佳替代方案查找组件以访问我需要的属性?我应该遵循的任何模式或习惯用法?您可以删除额外的dort吗?^^Ext.getCmp('search-button')。on.(变为Ext.getCmp('search-button')。on(抱歉,拼写错误已经修复…在本例中,jsfiddle.net可能有助于直接显示代码。假设它支持ExtJS。这是一个很好的问题,我们的代码看起来完全相同。我们正在使用Jasmine()进行测试。)我们的规范与上面的不一致。但我会再看一看。也许我们需要用新的眼光来看待它。但似乎除非我们将点击处理程序的第二个参数包装为一个函数,否则我们无法按预期启动搜索函数。我将跟踪我的结果……这是一个很好的问题,我们的代码看起来一模一样。我们正在测试茉莉花()我们的规范与上面的不一致。但我会再看一看。也许我们需要用新的眼光来看待它。但似乎除非我们包装单击处理程序的第二个参数是一个函数,否则我们无法按预期启动搜索函数。我会跟进我的结果。。。