2014-10-01 75 views
0

我有以下代码,我将一个按钮点击处理程序连接到一个匿名函数。我想迁移代码以使用静态函数。Sencha JS事件处理程序指向静态函数

目前代码:

[ 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编程背景,为您提供一些见解,了解我为什么要这样做。 :)

回答

0

处理程序期望对函数的引用。在代码的第二部分中,您正在执行该功能并将结果传递给处理程序。

handler: btnTest_Click

作为一个侧面说明,你应该避免使用全局的功能,分机为您提供了更好的方法来构建应用程序。

+0

埃文你能否提供一些关于Ext完善结构的例子吗? – Josh 2014-10-02 09:06:40

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 

会做同样的事情。

An Anonymous function的作品就像一个function的名字。