2014-10-01 72 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的名字。