2012-07-11 21 views
3

在我的Rails應用程序我有一些普通的老JS:調用一個純JS功能一旦轉爲CoffeeScript的

function reorder(divid,url) { 
     jQuery(divid).sortable({ 
      axis: 'y', 
      dropOnEmpty: false, 
      handle: '.drag', 
      cursor: 'crosshair', 
      items: 'li', 
      opacity: 0.4, 
      scroll: true, 
      update: function(){ 
      jQuery.ajax({ 
       type: 'post', 
       data: jQuery(divid).sortable('serialize'), 
       dataType: 'script', 
       url: url) 
      } 
     }); 
    } 

和它的作品時,我打電話:

 reorder("#pages","<%= changeorder_pages_path %>"); 

所以我決定把我的功能的CoffeeScript這給了我這樣的:

(function() { 
    var reorder; 

    reorder = function(divid, url) { 
    return jQuery("#pages").sortable({ 
     axis: "y", 
     dropOnEmpty: false, 
     handle: ".drag", 
     cursor: "crosshair", 
     items: "li", 
     opacity: 0.4, 
     scroll: true, 
     update: function() { 
     return jQuery.ajax({ 
      type: "post", 
      data: jQuery("#pages").sortable("serialize"), 
      dataType: "script", 
      complete: function(request) { 
      return jQuery("#pGESs").effect("highlight"); 
      }, 
      url: "/pages/changeorder" 
     }); 
     } 
    }); 
    }; 

}).call(this); 

,但我的電話不工作了 - 我得到了Firebug的錯誤:

reorder is not defined 

所以對我的問題 - 我現在怎麼調用函數它是CoffeeScripted?

我已閱讀本:Calling a function by its name

但我不知道他們在說什麼。我從來沒有使用全球=這個,並不知道它做什麼或爲什麼我想要使用它。

我讀這還有:http://elegantcode.com/2011/06/30/exploring-coffeescript-part-2-variables-and-functions/

除了這一點:http://www.informit.com/articles/article.aspx?p=1834699

我認識到,CoffeeScript的是保護我從全局變量,使我的代碼更好 - 但我不能找到一個解釋如何調用函數。

我玩過CoffeeScript網站,玩過立方體功能 - 所以我應該只能調用我認爲的函數名稱。

我在問這個問題,因爲我的知識存在差距 - 任何填補這個空白的幫助都將非常感激。

+1

您的CoffeeScript完全不像CoffeeScript。 – 2012-07-11 10:21:21

+0

沒有編譯錯誤,因爲它應該是現在縮進,它現在可以在遵循以下建議之後工作... – 2012-07-11 11:58:54

+0

但是,您包含的代碼不是coffeescript,而是由CoffeeScript編譯器生成的代碼 – 2012-07-11 12:03:32

回答

2

的CoffeeScript不會創建默認的全局,而且好像你正在試圖訪問一個reorder它在定義的文件之外。

但是你可以明確地把東西在全局命名空間寫

window.reorder = reorder 
+0

非常感謝。現在都在工作。我去散步,並打我,它是在本地定義,因爲它被包裹在一個匿名函數。我不確定我會制定出「窗口」。位 - 真的很有幫助,所以再次,謝謝。 – 2012-07-11 12:00:47