javascript - 无法访问窗口/全局变量 - 似乎未定义

标签 javascript ruby-on-rails backbone.js

目标

访问window.MyApp

问题

如果我执行console.log(window)MyApp对象会出现在那里;如果我这样做 console.log(window.MyApp),控制台会抛出我:

Uncaught ReferenceError: MyApp is not defined

更进一步

我正在 Rails (v 4.0.1) 上使用 Ruby (v 2.1.2) 以及 Backbone (v 1.1.2) 和 Asset Pipeline。我的环境如下:

/app/assets/javascripts/backbone/myapp.js:

//= require jquery
//= require jquery_ujs
//= require bootstrap-sprockets
//= require underscore
//= require backbone
//= require_tree ./templates
//= require_tree ./models
//= require_tree ./views
//= require_tree ./routers

window.MyApp = {
  Models: {},
  Collections: {},
  Routers: {},
  Views: {}
};

/app/assets/javascripts/backbone/routers/my_router.js 中(错误发生的地方),有以下内容:

console.log(MyApp);

/app/views/layouts/application.html.erb中,我以这种方式调用/app/assets/javascripts/backbone/myapp.js :

<!doctype html>
<html>
<head>
  <!-- lots of stuff here -->
  <%= javascript_include_tag 'backbone/myapp' %>
</head>
<body>
  <!-- lots of other stuffs here -->
</body>
</html>

最佳答案

我不确定全局对象是否会发生这种情况,但声明可能会被提升。如果您将声明 MyApp 声明移至需求之上或移动到不同的文件,并在其他 Backbone 项目之前要求它,它应该修复它。

关于javascript - 无法访问窗口/全局变量 - 似乎未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24679346/

相关文章:

javascript - 初始化 jQuery 函数并传递带有字符串的变量

javascript - 在 HTML 中以 react 形式从 formArray 访问 formControl 的值

ruby-on-rails - 如何让特定用户(不是 current_user)在 rails-devise 网站上注销?

ruby-on-rails - 丢弃第二个小数点后字符串变量中的所有内容

javascript - 如何在 Backbone 中初始化函数后将事件绑定(bind)到 DOM?

javascript - Backbone.js 的 Highcharts 重新加载问题

javascript - Html 将 json 值插入元素并将其转换为对象

javascript - Angular 6变量定义时未定义

javascript - Backbone.js 模型关系 : speeding up performance

ruby-on-rails - 在 Rails 3 中,如何解析 ISO8601 日期字符串以获取 TimeWithZone 实例?