1

我需要找到一种方法将 jQuery 自动完成处理程序附加到作为生态模板的一部分呈现的输入字段上。

当输入字段位于标记中的页面上时,这可以正常工作

HTML:

<input type="text" name="thing[name]" value="" id="the_input_field">
<input type="hidden" name="thing[id]" value="" id="the_id_field">

咖啡:

$("#the_input_field").autocomplete
  source: "/path_to/suggest"
  select: ( event, ui ) ->
    $( "#the_id_field" ).val ui.item.id

我尝试了一个使用 setTimeout 在 3 秒后应用自动完成功能的版本,但我知道这不是解决方案,只是跟踪问题。我需要的是一个回调来传递给渲染,这样它就可以在完成后附加自动完成功能。

希望有人可以对此有所了解。

干杯

4

1 回答 1

1

好的,所以我挣扎了一段时间,但现在一个简单的解决方案似乎是在渲染方法之后将调用添加到 Spine 控制器中。为什么我没有看到这个我不知道。

所以我现在在 Spine 控制器中拥有的是:

class WorkRequests extends Spine.Controller

constructor: ->
  super
  @render()

  render: =>
    @html @view('workrequests/new')
    @renderUi()

  renderUi: =>
    $("#the_input_field").autocomplete
      source: "/path_to/suggest"
      select: ( event, ui ) ->
        $( "#the_id_field" ).val ui.item.id 

window.WorkRequests = WorkRequests

到目前为止,这似乎工作并在视图呈现后添加 jQuery 的东西。我还没有看到一个非常重的渲染页面和时间是否有任何问题,但我认为这是一个解决方案。

(踢自己的头)

于 2012-02-28T10:21:24.060 回答