2012-07-11 23 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