我是 Backbone.js 的新手,我正在尝试将它集成到我当前的 rails 应用程序中。我正在关注 railscasts 的教程,但在集成它们时遇到了麻烦。基本上,我正试图调用我的资源(项目),并将它们显示在页面上。我的路由器如下所示:
class Placeholder.Routers.Projects extends Backbone.Router
routes:
'': 'index'
'projects/:id':'show'
initialize: ->
@collection = new CIS196Project.Collections.Projects()
@collection.fetch()
index: ->
view = new Placeholder.Views.ProjectsIndex()
$('#container').html(view.render().el)
show: (id) ->
alert "Project #{id}"
我的观点如下:
class Placeholder.Views.ProjectsIndex extends Backbone.View
template: JST['projects/index']
initialize: ->
document.write(@collection)
@collection.on('reset', @render, this)
render: ->
$(@el).html(@template(projects: @collection))
this
我大部分都是直接从教程中学到的。我添加了document.write(@collection)
测试。
加载页面后,我收到错误:
projects_index.js:17 未捕获类型错误:无法调用未定义的“on”方法
我fetch()
在路由器中成功创建了,因为在我的日志中,GET 请求成功通过,并且在 chrome 的控制台中尝试它时,获取应该返回一个大小为 1 的数组,但是它给出了那个错误,然后从其控制器加载默认的rails视图(我也不确定为什么会发生这种情况。我有一个定义的模板,但是当它抛出这个错误时,它只是恢复到以前,除非我调用document.write )。调用后document.write
,@collection
显示为“未定义”。
感谢您提供的任何帮助!