gpt4 book ai didi

javascript - 为什么所有的 coffeescript 文件总是同时执行 Rails

转载 作者:数据小太阳 更新时间:2023-10-29 08:35:36 26 4
gpt4 key购买 nike

我在 assets 文件夹中找到了每个模型的不同 coffeescript 文件。但是每次我访问一个页面时它们都会被执行,即使它来自不同的 Controller 。如果我继续/insertion/new 我希望只有 insertion.coffee 被执行,而不是我所有的 .coffee 开始。我怎样才能一次启动一个?

这是我的insertions.coffee

$(document).on "turbolinks:load", ->
if ($('#insertion_book_search'))
console.log("found")
console.log($('#insertion_book_search').length)
console.log($('#insertion_book_title').length)
$('#insertion_books_subject').parent().hide()

那是我的 static_pages.coffee

$(document).on "turbolinks:load", ->
console.log("Mie cose")
$('.last_img').on 'load', ->
natHeight = $(this).get(0).naturalHeight
natWidth = $(this).get(0).naturalWidth
if (natWidth > natHeight)
$(this).css( 'width','100%')
else
$(this).css( 'height','100%')

我想要实现的是,当我使用插入 Controller 时,它只加载 insertion.coffee,而当我使用静态页面 Controller 时,它只加载 static_pages.coffee。据我了解,当我将行 //require_tree . 添加到 /app/assets/javascript/application.js 时,我所有的咖啡都加载到我的所有 View 中。

如果我删除 require 树并尝试使用 <%= javascript_include_tag ..%> 添加它们,我需要一个 .js 文件而不是咖啡。可以加载咖啡文件吗?

最佳答案

您可以使用 coffeescript OOP 方法进行选择,下面是您的要求的详细信息和一些代码

  • 我建议你使用带类方法的咖啡,然后用事件 turbolinks:load 检查每个页面
  • 您可以查看名称为 Controller 和方法,例如 $(".purchase_requests.new")[0] 表示 Controller 是 purchase_requests 和方法 new
  • 我还建议您阅读 brandon hilkert 博客以获取更多引用信息,下面是 the link

检查每个页面加载的示例 coffeescript

class App.PurchaseRequest

renderYourJavascript: ->
console.log "purchase request js"

$(document).on "turbolinks:load", ->
if $(".purchase_requests.new")[0] || $(".purchase_requests.edit")[0]
purchase_request = new App.PurchaseRequest
purchase_request.renderYourJavascript()

正如您从我上面的代码中看到的那样,您可以通过检查 $(".controllers.action")[0] 来拆分

关于javascript - 为什么所有的 coffeescript 文件总是同时执行 Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45922818/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com