【问题标题】:Backbone fetch collection + Rails主干获取集合 + Rails
【发布时间】:2013-12-29 06:14:46
【问题描述】:

js 文件:

class BackApp.Collections.Posts extends Backbone.Collection
  url: '/api/posts'
  model: BackApp.Models.Post

class BackApp.Models.Post extends Backbone.Model

class BackApp.Routers.Posts extends Backbone.Router
  routes:
    '': 'index'
  initialize: ->
    @collection = new BackApp.Collections.Posts
    @collection.fetch()
  index: ->
    #view = new BackApp.Views.PostsIndex(collection: @collection)
    #$("#container").html(view.render().el)

铁路路线:

  scope "api" do
    resources :posts
  end
  root :to => 'main#index'

所以,当我尝试在 chrome 控制台中获取集合时:

collection = new BackApp.Collections.Posts
collection.fetch()
collection.length # => 3

但是如果我在初始化函数的帖子路由文件中写它(console.log)它显示 0 为什么?

【问题讨论】:

  • 别忘了我。 :)

标签: ruby ruby-on-rails-3 backbone.js coffeescript


【解决方案1】:

@collection.fetch() 异步执行。

当你尝试使用console.log()时已经加载了chrome控制台数据,但是当你使用js代码尝试它时,当你使用console.log()时数据尚未加载

您应该在加载时使用成功回调来了解集合的长度:

@collection.fetch(
  success: (collection, response, options) ->
    console.log collection.models.length
)

【讨论】:

  • 非常感谢!!我尝试了这个变体,但我忘记了成功回调的参数,所以,现在它可以工作了:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多