无法在Backbone.js中迭代Collection

时间:2012-12-04 06:40:12

标签: javascript backbone.js coffeescript

更新

这是一个愚蠢的错字。我正在使用Backbone.Model.extend进行收藏。 捂脸


尝试迭代一个集合,但我认为我已经错误地填充了它或者其他东西:

RecentContent = Backbone.View.extend
    initialize: ->
        @collection = new ContentAPI.ContentCollection()

        @collection.fetch
            success: (collection, response, options) =>
                console.log @collection
                # d {attributes: Object, _escapedAttributes: Object, cid: "c4", changed: Object, _silent: Object…}
                # property `attributes` contains Objects from server

                console.log @collection.models # undefined
                @render()

    #---------------------

    render: ->
        # ERROR: Object has no method 'each'
        @collection.each (model) ->
          console.log model

我还注意到,如果我尝试将reset事件绑定到@collection(而不是从success回调中进行渲染),它似乎永远不会被触发。

该系列非常简单:

class ContentAPI
    @Content: Backbone.Model.extend {}

    @ContentCollection: Backbone.Model.extend
        url: "/api/content/"
        model: @Content

我对Backbone有点新意,谢谢你的帮助。 :)

2 个答案:

答案 0 :(得分:1)

问题是你的集合是从错误的基类继承的。

@ContentCollection: Backbone.Model.extend

应该是

@ContentCollection: Backbone.Collection.extend

答案 1 :(得分:1)

我不是coffeescript专家,但我认为你的问题是

@ContentCollection: Backbone.Model.extend

应该是

@ContentCollection: Backbone.Collection.extend

同样,在迭代集合的模型时,请使用

_.each(collection.models, function(model) { console.log(model); });