javascript-无法从Rails的收集主干中获取数据

我正在使用OMDB API开发应用程序.我在’movie_controller’中定义了一个方法’top_movies’,该方法正在渲染json数据.

我已经定义了这样的集合:

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

Click to see JSON response

我在控制台中获取了集合,并以这种方式获取了对象.

Click to see the Image view of console

我想在页面上显示列表.但是我无法显示该列表.

films_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)应该已经解决了这个问题.但是为什么它不能呢?

解决方法:

而不是“重置”使用“同步”:

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

“sync” (model_or_collection, response, options) — when a model or collection has been successfully synced with the server.

Backbone.js Catalog of Events

上一篇:python-没有node.js的CoffeeScript编译器?


下一篇:javascript-将Ruby代码与js.coffee脚本混合