【问题标题】:How expose javascript variable with Rails 6?如何使用 Rails 6 公开 javascript 变量?
【发布时间】:2020-06-16 12:36:58
【问题描述】:

我在 javascipt/pack 中有一个 home.js 文件


var hello = "hello"
window.hello2 = "hello"


但是,在加载关联的视图 (home.html.erb) 后,在我的导航器的 javascript 控制台中,我会得到 Uncaught ReferenceError: hello is not definedundefined

【问题讨论】:

    标签: javascript ruby-on-rails webpack ruby-on-rails-6 webpacker


    【解决方案1】:
    1. var hello = "Hello" - 当您在控制台中输入 > hello 时,这将不起作用,因为 Javascript 中有一个称为闭包的概念。我发现this article 很有帮助。

    2. window.hello2 = "Hello" -> 您正在分配一个全局变量。当您在控制台中输入> window.hello2 时,它会给出输出,但只有> hello2 不起作用,它会给出ReferenceError

      • window.hello2 可用于您的所有 JS 代码,它是全局的。
      • 但是,不建议使用全局变量,在各自的函数中使用 vars。

    另外,你没有提到你是如何使用你的 pack/home.js 文件的。

    如果您在app/views/layouts/application.html.erb 中包含<%= javascript_pack_tag 'home' %>,那么您的JS 代码将在每个控制器/视图中运行(不仅仅是在Home 控制器中。)

    如果您在 app/views/home/index.html.erb 中包含 <%= javascript_pack_tag 'home' %>,那么您的 JS 代码将仅在 home#index 操作中运行 - 但它会触发刷新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-14
      • 2021-11-19
      • 1970-01-01
      • 1970-01-01
      • 2019-01-20
      • 2019-07-27
      相关资源
      最近更新 更多