2013-03-17 59 views
1

我刚刚开始使用Backbone,并且在从某些JSON数据生成简单的html列表时遇到问题。每个在主干视图中都不起作用渲染

,我发现了错误

Uncaught TypeError: Object function(){return c.apply(this,arguments)} has no method 'each'

这里是我的代码

var Show = Backbone.Model.extend(); 

var ShowCollection = Backbone.Collection.extend({ 

    model: Show, 
    url: 'http://192.168.0.7:8081/api/0b08ecef4eda8c6a28b6be3164a96ac8/?cmd=history&type=downloaded&limit=50', 

    parse: function(response){ 
     return response.data; 
    } 

}); 

var ItemView = Backbone.View.extend({ 

    tagName: "li", 
    template: $("#item").html(), 

    render: function() { 
    var templ = _.template(this.template); 
    this.$el.html(templ(this.model.toJSON())); 
    return this; 
    } 

}); 

var ShowView = Backbone.View.extend({ 

    el: $("#history"), 
    initialize: function() { 
    this.collection = ShowCollection; 
    this.render(); 
    }, 
    render: function() { 
    this.collection.each(function(item) { 
     this.renderItem(item); 
    }, this); 
    }, 
    renderItem: function(item) { 
    var itemView = new ItemView({ model: item }); 
    this.$el.append(itemView.render().el); 
    } 

}); 

var history = new ShowView(); 

这里是我的数据

{ 
data: [ 
{ 
date: "2013-03-16 05:14", 
episode: 10, 
provider: "-1", 
quality: "HD TV", 
resource: "bering.sea.gold.s02e10.720p.hdtv.x264-bajskorv.mkv", 
resource_path: "/Users/Machine/Tv/Bering.Sea.Gold.S02E10.720p.HDTV.x264-BAJSKORV repost", 
season: 2, 
show_name: "Bering Sea Gold", 
status: "Downloaded", 
tvdbid: 254203 
} 
], 
message: "", 
result: "success" 
} 

回答

2

this.c ollection = ShowCollection;

应该是

this.collection =新ShowCollection();

+0

是的我正在使用下划线。 – Plasticated 2013-03-17 21:43:12

+0

其实看着这条线...... this.collection = ShowCollection; 它应该可能读取 this.collection = new ShowCollection(); 实例化对象 – 2013-03-17 21:43:53

+0

嘿@Plasticated,你应该标记答案被接受,如果它帮助你解决你的问题。 – 2013-03-18 22:42:48

1

您正在将this.collection分配给扩展的Backbone Collection类,而不是其实例。请参阅扩展文档an example。你应该有类似this.collection = new ShowCollection()