1

转动我的轮子试图弄清楚这一点。我有一个链接,单击该链接可从服务器检索表单。该表单有 3 个按钮和 1 个文本输入。我试图让非提交按钮响应 JS,在从服务器返回表单后他们不这样做。

我在 ajax:success 试图调用的 lists.js 中创建了一个函数,但我没有做正确的事情。我已经在 lists.js 中测试了这个函数,我知道它可以工作,我只是没有正确调用它。

以下是相关文件。如何激活 showPicturePicker 函数,以便在插入 AJAX 响应后使用它?

列表.js

$("#new_list")
    .bind "ajax:success", (evt, xhr, settings) -> 
        $("#list-item").html(xhr)
        showPicturePicker

showPicturePicker = () ->
    $('#picture').click (e) ->
        e.preventDefault()
        alert "yeah, you figured it out"

$(document).ready showPicturePicker

_new.html.haml(从服务器返回的表单)

= form_for [@list, @item], :remote => true, :html => {:class => 'form-inline'} do |f|
  .input-append
    = f.text_field "name", :class => 'input-large', :placeholder => "Add item to this list"
    %button#picture.btn
      %span.icon-camera
    %button#link.btn{:style => "font-size: 10px;"} 
      http://
  .secondary-fields{:style => "display: none"}  
    .field.margin
      = f.text_field "link", :placeholder => "http://www.link.com", :style => "width: 325px"
    .field.margin
      = f.file_field "picture"
      = f.hidden_field "picture_cache"
  .clearfix
    = link_to "blah", "#{}", :class => "fuck-me"
  = f.submit "Add Item", :class => 'btn', :id => "add-item"

这也是我需要在其他地方解决的问题,感谢您的帮助。

4

1 回答 1

0

application.js 用 IIFE(立即调用的函数表达式)包装,并且在那里定义的变量将不会在其他文件中可见,除非您明确地使它们可用于全局范围(通过将它们附加到窗口或其他对象)。

在 application.js 中,尝试:

@showPicturePicker = ->
    ...
# or window.showPicturePicker = ->

“虽然为了清楚起见,本文档中没有显示,但所有 CoffeeScript 输出都包装在一个匿名函数中: (function(){ ... })(); 这个安全包装器,结合 var 关键字的自动生成,使它变得非常困难不小心污染了全局命名空间。”

http://coffeescript.org/#lexical_scope

于 2013-03-04T02:10:53.900 回答