在我的 Rails 应用程序中,我有一些普通的旧 JS:
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
但我不知道他们在说什么。我从未使用过 global=this,也不知道它的作用或为什么要使用它。
我也读过这个:http ://elegantcode.com/2011/06/30/exploring-coffeescript-part-2-variables-and-functions/
还有这个:http ://www.informit.com/articles/article.aspx?p=1834699
我意识到 CoffeeScript 正在保护我免受全局变量的影响并使我的代码变得更好——但我找不到关于如何调用函数的解释。
我玩过 CoffeeScript 网站并玩过 cube 函数——所以我应该能够调用我认为的函数名称。
我问这个问题是因为我的知识存在差距 - 任何填补这一差距的帮助将不胜感激。