8

我正在尝试使用 jquery ui 库在 rails 中执行自动完成功能。但是我不断收到语法错误“语法错误:保留字“函数”在线......”

这是我的课程.js.coffee 文件

jQuery ->

$(function() {
    function split( val ) {
        return val.split( /,\s*/ );
    }
    function extractLast( term ) {
        return split( term ).pop();
    }

    $( "#lesson_tag_name" )
        // don't navigate away from the field on tab when selecting an item
        .bind( "keydown", function( event ) {
            if ( event.keyCode === $.ui.keyCode.TAB &&
                    $( this ).data( "autocomplete" ).menu.active ) {
                event.preventDefault();
            }
        })
        .autocomplete({
            source: $('#lesson_tag_name').data('autocomplete-source')
            },
            search: function() {
                // custom minLength
                var term = extractLast( this.value );
                if ( term.length < 2 ) {
                    return false;
                }
            },
            focus: function() {
                // prevent value inserted on focus
                return false;
            },
            select: function( event, ui ) {
                var terms = split( this.value );
                // remove the current input
                terms.pop();
                // add the selected item
                terms.push( ui.item.value );
                // add placeholder to get the comma-and-space at the end
                terms.push( "" );
                this.value = terms.join( ", " );
                return false;
            }
        });
});

我在某处在线阅读,我可以用 -> 替换单词函数 -> 我这样做了,但我停止接收函数错误,但随后我收到其他语法错误,例如“语法错误:在线保留字“var”......”

难道我做错了什么?

4

2 回答 2

16

只有第一行是咖啡脚本;其余的是普通的javascript。

尝试使用此转换器:

http://js2coffee.org/

$(function() {});变成$ ->

于 2012-04-17T09:15:00.893 回答
3

如果你想在 coffeescript 文件中嵌入 javascript,你可以使用反引号:

jQuery ->
  `function abc() { return 123; }  // js syntax here`

见这里:http ://coffeescriptcookbook.com/chapters/syntax/embedding_javascript

不过,这很令人困惑,因此将代码转换为咖啡脚本通常是一个更好的主意,在这种情况下,您可以按照 DanS 的建议使用js2coffee.org转换器。

于 2013-02-24T18:54:14.160 回答