2017-02-17 8 views
3

に収集骨格からデータを取得することはできません。私はjsonデータをレンダリングしている 'movie_controller'にメソッド 'top_movies'を定義しています。私はOMDB APIを使ってアプリを作っていますレール

私はこのようなコレクションを定義している:私は、コンソールでコレクションをフェッチして、このようにオブジェクトを取得

class Fanboy.Collections.Movies extends Backbone.Collection 
    url: '/movie/top_movies' 

Click to see JSON response

を。

Click to see the Image view of console

私は、ページ上のリストを表示します。しかし、私はリストを表示することができません。

movies_router.js.coffee

class Fanboy.Routers.Movies extends Backbone.Router 
    routes: 
    "": "index" 

    initialize: -> 
    @collection = new Fanboy.Collections.Movies() 
    @collection.fetch() 

    index: -> 
    view = new Fanboy.Views.MoviesIndex(collection: @collection) 
    $('#movies-container').html(view.render().el) 

/view/movies_index.js.coffee

class Fanboy.Views.MoviesIndex extends Backbone.View 
    template: JST['movies/index'] 

    initialize: -> 
    @collection.on('reset', @render, this) 

    render: -> 
    $(@el).html(@template(movies: @collection)) 
    this 

/templates/movies/index.jst.eco

<h4>Top movies of all time </h4> 

<ul> 
    <% for movie in @movies.models : %> 
    <li><%= movie.get('Title') %></li> 
    <% end %> 
</ul> 

ここで私はh4タグを見ることができますが、タイトルのリストは見ることができません。私はここで間違っていますか?助けてください。

アップデート: -私はいくつかのデバッグをしました。定義されたURLはOmdb APIを経由して来ているので、ビューはバックボーンに非同期にロードされます。したがって、問題です。

だから私は、数秒間のsetTimeoutを入れて、今私は、リストを表示することができています。しかし、これはアプリケーションを遅くする。私は今何をすることができますか?

@collection.on('reset', @render, this)は問題を扱っているはずですけど。しかし、なぜそれができないのですか?代わりに'reset'使用'sync'

答えて

3

@collection.on('sync', @render, this) 

"同期"(model_or_collection、応答、オプション) - モデルまたはコレクションが正常にサーバーと同期されています。

Backbone.js Catalog of Events

+0

ここでは、イベントが発射されていませんクリックしてください。私は 'view/movies_index.js.coffee'でイベントを定義しました。ボタンは 'template/movies_index.jst.eco'の中にあります。理由を教えてください。 –

+0

新しい質問を開くには、見たいときにコードを固執する必要があります。 – mikeapr4

+0

私は新しい質問を開きました:http://stackoverflow.com/questions/42306398/backbone-click-event-発砲しない –

関連する問題