【问题标题】:Translate a JQuery-Javascript call to Coffeescript (Rails 3.1)将 JQuery-Javascript 调用转换为 Coffeescript (Rails 3.1)
【发布时间】:2012-02-07 02:58:45
【问题描述】:

我目前正在升级 Rails 应用程序。虽然我确实设法翻译了更简单的 JQuery 调用,但我却被更复杂的 JQuery 自动完成卡住了。

Javascript

$(document).ready(function() {  
    var data_category = <%= @autocomplete_categories %>;
    $("#entry_category").autocomplete({ 
        source: function(req, responseFn) {
            var re = $.ui.autocomplete.escapeRegex(req.term);
            var matcher = new RegExp( "^" + re, "i" );
            var a = $.grep( data_category, function(item,index) {
                return matcher.test(item);
            });
            responseFn( a );
        }, 
        minLength: 0, 
        delay: 0, 
        autoFocus: true 
    });

咖啡:

  $ ->
    data_category = <%= @autocomplete_category %>;
    $("#entry_category").autocomplete({ 

这两个函数我没有翻译,请指教正确的语法!

【问题讨论】:

    标签: jquery ruby-on-rails-3.1 coffeescript


    【解决方案1】:
    $ ->
      data_category = <%= @autocomplete_categories %>
      $('#entry_category').autocomplete
        source: (req, responseFn) ->
          re = $.ui.autocomplete.escapeRegex req.term
          matcher = new RegExp "^#{re}", 'i'
          a = $.grep data_category, (item, index) -> matcher.test item
          responseFn(a)
        minLength: 0
        delay: 0
        autoFocus: true
    

    【讨论】:

    • 接近完美。调用 JQuery,但列表为空。我添加了警报 data_category,这导致未定义。 的 _forms.html.erb(部分)中的调试输出显示列表元素。知道如何解决这个问题吗?
    • 我实际上并不了解 Rails,但这是该列表的正确名称吗?在您的 Javascript 中,您有“autocomplete_categories”,但在您的咖啡脚本中,您有“autocomplete_category”。这是在 Javascript 中工作的吗?
    • 是的,刚刚重新检查过,它在 JS 中工作,而不是你上面的代码。问题似乎是 @autocomplete_categories 在此范围内未分配或可用。 data_category = &lt;%= @autocomplete_categories %&gt; alert(&lt;%= @autocomplete_categories %&gt;) alert(data_category) 并且两个警报都显示未定义。在视图中,@autocomplete_categories的调试显示了列表,所以视图对应的视图有数据。
    • 我发现,无法从咖啡脚本中的控制器访问变量。单个变量有一些解决方法,通过快速谷歌搜索我没有找到任何列表。将再试一次,同时感谢您对查询的翻译!
    猜你喜欢
    • 1970-01-01
    • 2016-11-26
    • 2014-12-13
    • 2012-03-04
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    • 2019-05-05
    • 2011-11-12
    相关资源
    最近更新 更多