Sencha JS事件处理程序指向静态功能

时间:2014-10-01 21:40:35

标签: javascript extjs

我有以下代码,我将按钮单击处理程序连接到匿名函数。我想迁移代码以使用静态函数。

当前代码:

[ grid, { xtype: 'splitter' },
            { title: 'Person Details', bodyPadding: 5, flex: 2,
                    items: 
                    [
                        { itemId: 'txtName', fieldLabel: 'Name:', xtype: 'textfield'}, 
                        { itemId: 'txtAge', fieldLabel: 'Age', xtype: 'textfield'},
                        { itemId: 'btnShow', xtype: 'button', height: '60', width: '20%', align: 'right', text: 'Show Data', handler: function (){ btnTest_Click(); }}
                    ] 
            }       
        ]

我想做这样的事情:

handler: btnTest_Click()

function btnTest_Click()
{
  alert('Test');
}

我希望这是有道理的。我来自.NET编程背景,让您深入了解我为什么这样做。 :)

2 个答案:

答案 0 :(得分:0)

处理程序需要对函数的引用。在代码的第二部分中,您正在执行fucntion并将结果传递给处理程序。

handler: btnTest_Click

作为旁注,您应该避免使用全局函数,Ext为您提供了更好的方法来构建应用程序。

答案 1 :(得分:0)

在JavaScript中没有static函数,你可以模仿这样的行为:

var count = (function(){
  var c = 0;
  return function(){
    return c++;
  }
})();
console.log(count()); console.log(count()); console.log(count());

此外,在JavaScript function中,名称实际上是使用()执行的变量,因此

handler: function (){ btnTest_Click(); }}

handler: btnTestClick

会做同样的事情。

匿名function的作用类似于function