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

How do I call a JS function from a different file in the Rails asset pipeline

本文关键字:文件 调用 函数 JS Rails 资源 管道      更新时间:2023-09-26

这可能是一个一般的JS封装问题,而不是Rails资产管道问题。

在资产管道中,我有一些通用的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'

我还针对主体类在控制器/操作特定页面上运行特定的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文件中调用它,我该怎么做呢?

将函数提取到全局作用域中(在jQuery之外)。然后它可以在Javascript代码的任何地方使用,因为它成为window对象的成员。