尝试跟随Ryan Bates Backbone.js教程构建抽奖应用程序,但我已经遇到了第一段代码的问题。在application.js的init函数中,他初始化了Raffler路由的新实例,它应该触发警报“主页”,但是我在Firebug中遇到了以下我不理解的错误
entries.js:5Uncaught ReferenceError: Raffler is not defined
entry.js:15Uncaught ReferenceError: Backbone is not defined
entries.js:23Uncaught ReferenceError: Backbone is not defined
index.js:17Uncaught ReferenceError: Backbone is not defined
application.js:7Uncaught SyntaxError: Invalid regular expression: missing /
raffler.js:9Uncaught TypeError: undefined is not a function
我有什么想法可以解决这个问题吗?
Javascript角/ raffler / application.js中
window.Raffler =
Models: {}
Collections: {}
Views: {}
Routers: {}
init: ->
new Raffler.Routers.Entries()
Backbone.history.start()
$(document).ready ->
Raffler.init()
路由器/ entries.js
class Raffler.Routers.Entries extends Backbone.Router
routes:
'': 'index'
index: ->
alert "home page"
更新
我运行生成器后//= require_tree .
紧跟在需求jquery_ujs之后,我发现(我认为)是导致一些问题的原因。但是,我现在已经把它移到了底部,我仍然得到这个错误
Raffler.Routers.Entries is not a constructor
[Break On This Error]
new Raffler.Routers.Entries();
的application.js
//= require jquery
//= require jquery_ujs
//= require underscore
//= require backbone
//
//= require .//raffler
//
//= require_tree ../templates/
//= require_tree .//models
//= require_tree .//collections
//= require_tree .//views
//= require_tree .//routers
//= require_tree .
答案 0 :(得分:7)
我遇到了同样的问题。对我来说,解决方案是删除行
//= require_tree .
application.js
文件的,因为这一行在下划线和backbonejs的行之前。
答案 1 :(得分:0)
我发现有其他人遇到同样的问题然后让它上班。我将他的代码(与我的代码完全相同)复制到我的文件中,现在我正在工作。不知道为什么
window.Raffler =
Models: {}
Collections: {}
Views: {}
Routers: {}
init: ->
new Raffler.Routers.Entries()
Backbone.history.start()
$(document).ready ->
Raffler.init()