ruby-on-rails-3 - 在 Rails View 中触发 Coffeescript 函数

标签 ruby-on-rails-3 coffeescript haml

在我们的一些 Rails View 中,我们有 javascript 函数,可以异步加载某些数据以填充页面。我们的 application.js 文件加载 asset/javascripts 文件夹中的所有 javascript。

以下是我们的 haml View 中的一些内容:

:javascript
  $(function() {
    fetch_all_facebook_invitees();
  });

如果我们将 fetch_all_facebook_invitees 函数定义放在 CoffeeScript 文件中,它会加载到每个页面上,因为它们包含在应用程序的所有页面中:

//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require_tree .

为页面加载 javascript 的最佳实践是什么?只选择性地执行而不加载整个树?

最佳答案

您可以通过内联渲染“部分”咖啡文件来解决此问题。

../assets/javascripts/inline/facebook_invites.js.coffee

确保加载 DOM 时触发文件内的所有事件

$ ->
  # do Facebook stuff

facebook.haml:

= javascript_include_tag“内联/facebook_invites”


然后还有我用来制作 Controller / View 特定 Coffee 文件的方法:

application.html.haml:

%body{ :data => { :controller => params[:controller], :action => params[:action]} }

application.js.coffee:

$(document).ready ->
  load_javascript($("body").data('controller'),$("body").data('action'))

load_javascript = (controller,action) ->
  $.event.trigger "#{controller}.load"
  $.event.trigger "#{action}_#{controller}.load"

facebook.js.coffee

$(document).bind 'edit_facebook.load', (e,obj) =>
  # fire on edit facebook controller action

$(document).bind 'show_facebook.load', (e,obj) =>
  # fire on show facebook controller action

$(document).bind 'facebook.load', (e,obj) =>
  # fire on all facebook controller actions

关于ruby-on-rails-3 - 在 Rails View 中触发 Coffeescript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8288734/

相关文章:

ruby-on-rails - Rails View 在 ruby​​ 1.9 中自发燃烧的ivars

javascript - jQuery 自动完成仅为第一个动态插入的元素初始化

javascript - 为什么 window.location.reload() 否定前面的命令?

ruby-on-rails-3 - 每个 rake 任务似乎都在运行某种测试,我该如何停止它?

javascript - Angular : JSON filter in textarea produces a lot of slashes

coffeescript - "Error: write after end"使用Coffeeify时

ruby-on-rails - 使用 Ruby 插值嵌入 HAML 变量

ruby-on-rails-3 - Heroku Cedar - 静态 Assets - Rails 3.0.x

javascript - Coffeescript 本地开发和 Require.js 插件性能

html - Rails - 为什么 HAML 显示完整的哈希值?