2011-03-03 76 views
0
someClass = Ext.extend(someClassB, { 
     _someFunctionC{ 
      someButton = new Ext.button({ 
       handler: function() { 
          this._onClick('click'); 
         } 
      }), 
      _onClick(someMessage){ 
       Ext.Msg.alert(someMessage); 
      } 
     } 
    } 

_onClick吃一個參數;在上面的代碼中,您將'click'事件放入,因爲您希望在用戶單擊按鈕後執行_onClick。但是,如何指定此特定的「單擊」註冊並同時將_onClick參數作爲本地變量傳遞?Ext.Button處理程序配置選項

另外,爲什麼你甚至不得不指定'點擊',當API指出處理程序總是與點擊有關?這些附加信息不是不必要的嗎?

+0

可以或許你精心遠一點?也許張貼一些「元代碼」,說明你正在努力實現的目標?這是有點不清楚你想要做什麼或出了什麼問題 – ChrisR 2011-03-03 15:09:32

+0

這有幫助嗎?基本上我想傳遞一些信息。 – ppecher 2011-03-03 15:43:05

回答

1

通常你會像這樣設置它。由於someFunction是「類」的成員,並且可以訪問任何你想要的數據,所以不需要傳遞參數。

var button = new Ext.Button({ 
    handler: this.someFunction 
    scope: this 
}); 

someFunction: function() { 
    // do something interesting. 
} 
+0

好的建議。但是,這需要對生成的變量進行一些修改,我想要修改處理程序配置選項,而不是像範圍那樣繞過它:this。更一般地說,我試着理解指定匿名函數與指定你所建議的函數之間的區別。 – ppecher 2011-03-03 15:46:10

1

所以,如果我理解正確,你想設置處理程序配置選項,但自己設置參數一氣呵成?

這是做你想做的嗎?

// clicking the button alerts 'Hello World' 
new Ext.Button({ 
    text: 'Test', 
    handler: function(value){ 
     alert('Hello, ' + value); 
    }.createCallback('World') 
}); 

通知,匿名函數執行createCallback,這爲handler只被傳遞您傳遞給createCallback參數的回調函數。

0

您還可以創建插入額外的參數的回調函數,當它被稱爲:

var button = new Ext.Button({ 
    handler: this.someFunction.createDelegate(button,['Some message']) 
}); 
1

我發現這樣做是爲了與你一起鍵通過自定義配置選項的另一種方式。假設你想有一個splitbutton可以選擇要添加的橫幅數量。 (這是從最近的項目)

{ 
xtype: 'splitbutton', 
iconCls: 'icon addBanners', 
ref: '../addBanner', 
text: 'Add Banner', 
menu: new Ext.menu.Menu({ 
    items: [{ 
     text: 'Add 10 Banners', 
     scope: this, 
     handler: this.addBanner, 
     numBanners: 10 
    },{ 
     text: 'Add 20 Banners', 
     scope: this, 
     handler: this.addBanner, 
     numBanners: 20 
    }] 
}),      
scope: this, 
handler: this.addBanner, 
numBanners: 1 
} 

而且在你的函數:

addBanner: function(button, event) { 
     if (button.numBanners) { 
      // do whatever 
     } 
} 
相關問題