Javascript 到 Coffeescript
Javascript to Coffeescript
所以我有这个javascript它自己工作
function update_checkboxes()
{
var part_array = [];
$("input#edit:checked").parents('td').next().each(function(){
part_id = $(this).text();
part_array.push(part_id);
});
$("input#participant_ids").val(JSON.stringify(part_array));
}
我转换为 coffeescript
update_checkboxes = ->
part_array = []
$("input#edit:checked").parents("td").next().each ->
part_id = $(this).text()
part_array.push part_id
$("input#participant_ids").val JSON.stringify(part_array)
问题是当我执行 rails rake assets:precompile
时,它编译正常但在 Firebug 中我给出错误
ReferenceError: part_array is not defined
$("input#participant_ids").val(JSON.stringify(part_array));
因为 part_array 在不同的块中定义。
update_checkboxes = function() {
var part_array;
return part_array = [];
};
$("input#edit:checked").parents("td").next().each(function() {
var part_id;
part_id = $(this).text();
return part_array.push(part_id);
});
$("input#participant_ids").val(JSON.stringify(part_array));
}).call(this);
我做错了什么?
请记住,在 CoffeeScript 中,缩进 很重要 ,您不能可靠地混合使用空格和制表符。
此 CoffeeScript,其中缩进已标准化为两个空格:
update_checkboxes = ->
part_array = []
$("input#edit:checked").parents("td").next().each ->
part_id = $(this).text()
part_array.push part_id
$("input#participant_ids").val JSON.stringify(part_array)
结果JavaScript:
var update_checkboxes;
update_checkboxes = function() {
var part_array;
part_array = [];
$("input#edit:checked").parents("td").next().each(function() {
var part_id;
part_id = $(this).text();
return part_array.push(part_id);
});
return $("input#participant_ids").val(JSON.stringify(part_array));
};
...不会以在单独的块中定义的 part_array
结束。
你的缩进必须关闭。我将问题中的 exact coffeescript 粘贴到 js2coffee
update_checkboxes = ->
part_array = []
$("input#edit:checked").parents("td").next().each ->
part_id = $(this).text()
part_array.push part_id
$("input#participant_ids").val JSON.stringify(part_array)
并收到...
var update_checkboxes;
update_checkboxes = function() {
var part_array;
part_array = [];
$("input#edit:checked").parents("td").next().each(function() {
var part_id;
part_id = $(this).text();
return part_array.push(part_id);
});
return $("input#participant_ids").val(JSON.stringify(part_array));
};
这是正确的。 Whosebug 必须在您粘贴缩进时规范化缩进。看看原文,修正缩进不匹配的问题
所以我有这个javascript它自己工作
function update_checkboxes()
{
var part_array = [];
$("input#edit:checked").parents('td').next().each(function(){
part_id = $(this).text();
part_array.push(part_id);
});
$("input#participant_ids").val(JSON.stringify(part_array));
}
我转换为 coffeescript
update_checkboxes = ->
part_array = []
$("input#edit:checked").parents("td").next().each ->
part_id = $(this).text()
part_array.push part_id
$("input#participant_ids").val JSON.stringify(part_array)
问题是当我执行 rails rake assets:precompile
时,它编译正常但在 Firebug 中我给出错误
ReferenceError: part_array is not defined
$("input#participant_ids").val(JSON.stringify(part_array));
因为 part_array 在不同的块中定义。
update_checkboxes = function() {
var part_array;
return part_array = [];
};
$("input#edit:checked").parents("td").next().each(function() {
var part_id;
part_id = $(this).text();
return part_array.push(part_id);
});
$("input#participant_ids").val(JSON.stringify(part_array));
}).call(this);
我做错了什么?
请记住,在 CoffeeScript 中,缩进 很重要 ,您不能可靠地混合使用空格和制表符。
此 CoffeeScript,其中缩进已标准化为两个空格:
update_checkboxes = ->
part_array = []
$("input#edit:checked").parents("td").next().each ->
part_id = $(this).text()
part_array.push part_id
$("input#participant_ids").val JSON.stringify(part_array)
结果JavaScript:
var update_checkboxes;
update_checkboxes = function() {
var part_array;
part_array = [];
$("input#edit:checked").parents("td").next().each(function() {
var part_id;
part_id = $(this).text();
return part_array.push(part_id);
});
return $("input#participant_ids").val(JSON.stringify(part_array));
};
...不会以在单独的块中定义的 part_array
结束。
你的缩进必须关闭。我将问题中的 exact coffeescript 粘贴到 js2coffee
update_checkboxes = ->
part_array = []
$("input#edit:checked").parents("td").next().each ->
part_id = $(this).text()
part_array.push part_id
$("input#participant_ids").val JSON.stringify(part_array)
并收到...
var update_checkboxes;
update_checkboxes = function() {
var part_array;
part_array = [];
$("input#edit:checked").parents("td").next().each(function() {
var part_id;
part_id = $(this).text();
return part_array.push(part_id);
});
return $("input#participant_ids").val(JSON.stringify(part_array));
};
这是正确的。 Whosebug 必须在您粘贴缩进时规范化缩进。看看原文,修正缩进不匹配的问题