Backbone/Railsプロジェクトに2つ目のコレクションを追加する際に問題が発生しました
これがコレクション会社のクラスファイルです
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
ルーターでコレクションとしてを設定し、ルータークラスで作成されたビューに渡しました。
アプリケーションの別のコレクションにまったく同じコードを実装しているので、2つ目のコレクションを追加しようとしているのでしょうか?
次の手順を実行すると、ブラウザのjavascriptコンソール内ですべて完全に機能します
companies = new Raffler.Collection.Companies()
companies.fetch()
companies.length
サーバーを呼び出して正しい数のレコードを返していることがわかります。それでは、なぜコードがアプリケーション内で機能しないのでしょうか。何か案は?