2017-03-03 24 views
-2

我想將一個函數傳遞給我簡單的教程代碼,這樣我就可以在頁面上觸發事件。爲什麼從閉包中調用外部函數時窗口不工作?

我有兩個JavaScript文件:map.js和tutorial.js。根和tutorial.js中的Map.js位於關閉中,因爲我希望能夠重複使用而不會出現任何問題。

在map.js

function foo(bar){ 
    // do something 
} 

在tutorial.js的閉合功能。我只是包含了我的callFunc方法,但是我從頁面上具有數據屬性的元素獲取$ step。

<li data-func="foo" data-param="bar">...</li> 

我不能讓這個函數實際調用。正如你可以看到我試過窗口和根。

(function ($, root, window) { 
    // Use strict mode to reduce development errors. 
    // @link http://www.nczonline.net/blog/2012/03/13/its-time-to-start-using-javascript-strict-mode/ 
    "use strict"; 

    /** 
    * Calls function from step and passes params. 
    */ 
    function callFunc($step) { 
     var func = $step.attr("data-func"); 
     var param = $step.attr("data-param"); 
     if (func !== undefined) { 
      console.log(root.func); 
      if (param !== undefined) { 
       window.func(param); 
      } else { 
       window.func(); 
      } 
     } 
    } 

})(jQuery, this, window); 

map.js文件有一個函數foo(bar)。我想從我的封閉中調用這個教程。

+1

爲什麼這個問題越來越downvotes?我以爲我提供了充足的信息? – dawoodman71

回答

1

而不是

window.func(param); 
window.func(); 

嘗試

window[func](param); 
window[func](); 
+0

我以爲我曾嘗試過,並沒有奏效。但是,它現在正在工作!謝謝。 – dawoodman71

相關問題