我在向我的 Backbone/Rails 项目添加第二个集合时遇到问题
这是我的收藏公司的课程文件
class Raffler.Collections.Companies extends Backbone.Collection
url: '/api/companies'
model: Raffler.Models.Company
这是模型的类文件
class Raffler.Models.Company extends Backbone.Model
这是路由器
class Raffler.Routers.Companies extends Backbone.Router
routes:
'companies': 'index'
'companies/:id' : 'show'
initialize: ->
@companies = new Raffler.Collections.Companies()
@companies.fetch()
alert @companies
index: ->
view = new Raffler.Views.CompaniesIndex(collection: @companies)
$('#container').html(view.render().el)
这是视图
class Raffler.Views.CompaniesIndex extends Backbone.View
template: JST['companies/index']
initialize: ->
@companies.on('reset', @render, this)
render: ->
$(@el).html(@template(companies: @companies))
this
当我到达时它会倒下@companies.on
- 错误是无法在未定义上调用方法'on'。
我不明白这个错误 - 我已将@companies
路由器中的集合设置为集合并将其传递到路由器类中创建的视图中。
我在应用程序的另一个集合上实现了完全相同的代码,所以我想知道是不是因为我正在尝试添加第二个集合?
当我执行以下操作时,这一切都在浏览器的 javascript 控制台中完美运行
companies = new Raffler.Collection.Companies()
companies.fetch()
companies.length
我可以看到它正在调用服务器并返回正确数量的记录 - 那么为什么代码在应用程序中不起作用?有任何想法吗?