如何在Rails 6中暴露javascript变量?

问题描述 投票:0回答:1

我在javasciptpack里有一个 首页.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
投票
  1. var hello = "Hello" - 当你输入 > hello 在控制台中,这将无法工作,因为在Javascript中,有一个叫做Closure的概念。我发现 本文 有用的。

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.