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)
rails routes:
scope "api" do
resources :posts
end
root :to => 'main#index'
所以,当我在chrome控制台中尝试获取集合时,如:
collection = new BackApp.Collections.Posts
collection.fetch()
collection.length # => 3
但是如果我在初始化函数的帖子路由文件中写了它(console.log)它会显示0 为什么呢?
答案 0 :(得分:1)
@ collection.fetch()执行异步。
当您使用console.log()时尝试已经加载的Chrome控制台数据,但是当您使用js时尝试使用数据时,在使用console.log()时会加载数据
你应该使用成功回调来知道加载时的集合长度:
@collection.fetch(
success: (collection, response, options) ->
console.log collection.models.length
)