【发布时间】:2013-03-24 19:44:54
【问题描述】:
这是我对收藏的看法
var mssg = mssg || {};
mssg.MessagesView = Backbone.View.extend({
el: '#messages',
initialize: function() {
this.collection.fetch();
this.collection.bind('reset', this.render, this);
},
render : function() {
this.$el.html('');
this.collection.each(function( item ) {
this.renderMessage( item );
}, this );
return this;
},
renderMessage : function( item ) {
var messageView = new mssg.MessageView({
model : item
});
this.$el.append( messageView.render().el );
}
});
这是收藏
var mssg = mssg || {};
mssg.Messages = Backbone.Collection.extend({
model : mssg.Message,
url : 'messages'
});
这就是它的初始化方式:
var mssg = mssg || {};
$(function() {
new mssg.MessagesView({
collection : new mssg.Messages()
});
});
问题是绑定到reset 的render 函数在ajax 获取请求后没有触发。
如果我将它绑定到add,它就可以工作。
我尝试将all 绑定到一个调试函数,它说sync 事件与add 一起为每个项目调用。
【问题讨论】:
-
你能试试 this.collection.fetch({reset: true}) 吗?
-
@nikoshr 谢谢你的工作!我以为这是暗示的吗?
标签: javascript jquery backbone.js underscore.js