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!
IndexView クラス宣言から .Views を取り出すと、機能します...ただし、アプリは中規模から大規模であるため、クラスの命名には 2 つ (またはそれ以上) のレベルを使用したいと考えています。
私たちは何を間違っていますか?