我正在使用此功能返回unique values of an array。
function unique(array) {
return $.grep(array, function(el, index) {
return index == $.inArray(el, array);
});
}
当它被放置在视图的脚本块中时,它可以完美地工作,我将其称为:
$('#array_text').val(unique(colData).join('; '));
然而,当我"翻译"它是Coffeescript并将其放在相关的coffeescript文件中
unique = (array) ->
$.grep array, (el, index) ->
index is $.inArray(el, array)
虽然该函数似乎在关联的.js文件中正确呈现,
var unique;
unique = function(array) {
return $.grep(array, function(el, index) {
return index === $.inArray(el, array);
});
};
当我从视图的脚本块中以相同的方式调用unique时,我收到错误。
Uncaught ReferenceError: unique is not defined
我希望unique()
成为"全球"在环境中发挥作用。
答案 0 :(得分:0)
rails中coffee脚本文件中定义的每个javascript函数都只限于本地文件,因此默认情况下它在文件外部不可见。如果要全局使用函数,则必须在开头用@
符号定义它。
@unique = (array) ->
$.grep array, (el, index) ->
index is $.inArray(el, array)
现在你可以在任何地方使用它,你在脚本块中的代码应该再次工作。