目标
访问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/