2011-10-09 51 views
0

我試圖在我的模塊內進行+1次點擊註冊,該模塊被封裝爲一個匿名函數。點擊處理程序可以作爲一個對象嗎?

爲此,我創建了一個全局對象MyModule,並通過它導出了我的Click處理函數。問題是 - 我的點擊處理程序沒有被調用。

Live demo。代碼:

// Initialize +1 button 
gapi.plusone.go(); 


(function(){ 
    window.MyModule = {}; 

    function plusOneClicked() { 
    alert("+1!"); 
    } 

    window.MyModule.plusOneClicked = plusOneClicked; 
})() 

... 

<g:plusone callback='window.MyModule.plusOneClicked'></g:plusone> 

當我給一個回調的外部函數,其唯一目的是向window.MyModule.plusOneClicked呼叫轉移,它的工作原理:

function foo() { 
    window.MyModule.plusOneClicked(); 
} 
... 
<g:plusone callback='foo'></g:plusone> 

爲什麼會單擊處理小姐window.MyModule.plusOneClicked(),但找到foo()?

回答

1

谷歌很可能在他們的代碼編寫

window[callback](); 

這要求callback字符串引用window的屬性,而不是另一個對象的屬性。

0

我相信,因爲callback預計直接處理方法(如foo()),而不是一個參考(如window.MyModule.plusOneClicked)。所以基本上,你不能簡單地將這樣的引用分配給點擊處理程序,而是編寫一個(包裝)方法作爲處理程序並讓它執行必要的調用。

+0

您的術語不正確。 – SLaks

相關問題