2012-04-23 10 views
0

私はコレクションの会社バックボーン&Railsの

class Raffler.Collections.Companies extends Backbone.Collection 
    url: '/api/companies' 
    model: Raffler.Models.Company 

のための私のクラスファイルは、こちらのモデル

のクラスファイルは、ここに私のバックボーン/ Railsのプロジェクト

に2つ目のコレクションを追加することで問題ですされています

class Raffler.Models.Company extends Backbone.Model 

相続人はルータ

​​

そして、ここでは、私が@companies.onに着くときには転倒ビュー

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をルータのCollectionとして設定し、ルータクラスで作成されたビューに渡しました。

私はアプリケーション内の別のコレクションに実装されたコードとまったく同じコードを持っていますので、2番目のコレクションを追加しようとしているのでしょうか?

それはすべてのブラウザでJavaScriptコンソール内完璧に動作私が行うときに、次の

companies = new Raffler.Collection.Companies() 
companies.fetch() 
companies.length 

私はそれがサーバーへの呼び出しを行うと、レコードの正しい数を返していることがわかります - なぜdoesnのアプリケーション内でのコードの作業はありませんか?何か案は?お使いのルータで

答えて

3

、あなたはこれを言う:

@companiesに新しいCompaniesIndexの @collection propertyを設定します
view = new Raffler.Views.CompaniesIndex(collection: @companies) 

、渡された場合、添付されますいくつかの特別なオプションがあります。直接ビューに:[...] collection [...]。

だからあなたのビューで、あなたが@collection、ない@companiesを参照してください:

class Raffler.Views.CompaniesIndex extends Backbone.View 
    #... 
    initialize: -> 
    @collection.on('reset', @render, @) 

@companiesのみルータ内部で定義されていますが、明示的に内部の@companiesに何かを割り当てる場合を除き、ビューは約@collectionを知っていますビュー。

+0

ありがとうございました...これはうまくいきました。ありがとうございました。 –

関連する問題