如何从Rails资产管道中的不同文件调用JS函数

时间:2011-10-25 16:53:46

标签: javascript ruby-on-rails ruby-on-rails-3.1 encapsulation asset-pipeline

这可能是比Rails资产管道更普遍的JS封装问题。

在资产管道中,我有一些在任何地方都使用的通用JS文件:

应用程序/资产/ Javascript角/ pickers.js.cofeee

jQuery ->

  $('.datetimepicker').datetimepicker
    dateFormat: 'yy-mm-dd',
    timeFormat: 'h:mmtt',
    ampm: true,
    hourGrid: 4,
    minuteGrid: 10

  $('.datepicker').datepicker
    dateFormat: 'yy-mm-dd'

我还将body类定位为在控制器/操作特定页面上运行特定的JS:

应用程序/资产/ Javascript角/ employees.js.cofeee

jQuery ->

  if $('.employees.edit').length

    # initialize datepickers when adding new nested fields
    $('form').live 'nested:fieldAdded', (e) ->
      $(e.field).find('.datepicker').removeClass('hasDatepicker').datepicker
        dateFormat: 'yy-mm-dd'

现在这不是重复的最麻烦的例子,但假设我想将这个日期选择代码移动到一个函数中,然后在employees.js.coffee文件中调用它,我怎么能这样做?

1 个答案:

答案 0 :(得分:4)

您将函数提取到全局范围(jQuery之外)。然后它在Javascript代码中的任何位置都可用,因为它成为window对象的成员。

您应该阅读scopes in Javascript