我是 Backbone + Coffeescript + Rails 的新手,我一直在初始化应用程序。main_app.js.coffee 是:
#= require_self
#= require_tree ./templates
#= require_tree ./models
#= require_tree ./views
#= require_tree ./routers
class window.BackofficeApp
Models: {}
Collections: {}
Routers: {}
Views: {}
sanity:-> true
constructor: ->
console.log "go backofficeapp!"
new BackofficeApp.Router()
try
Backbone.history.start()
路由器还是很简单的:
class BackofficeApp.Router extends Backbone.Router
routes:
"": "index",
"users": "users",
"csense": "csense"
index: ->
console.log "index called from router!"
view = new BackofficeApp.Views.IndexView()
$('#main-app').html(view.render().el)
users: ->
console.log "users"
csense: ->
console.log "contentsense!"
还有 IndexView:
class BackofficeApp.Views.IndexView extends Backbone.View
render: ->
template = JST['index_view']
$(@el).html(template);
console.log "index called from indexview!"
this
一切都从 jQuery 开始(准备好文档):
jQuery ->
new BackofficeApp()
但是我们在控制台中看到以下消息/错误:
Uncaught TypeError: Cannot read property 'IndexView' of undefined
go backofficeapp!
index from router!
如果我将 .Views 从 IndexView 类声明中取出,它可以工作......但是,由于应用程序是中型到大型,我们希望在命名类时使用 2 个(或更多)级别。
我们做错了什么?