骨干集合取不火复位()

问题描述:

这是我收集骨干集合取不火复位()

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() 
    }); 
}); 

问题是绑定到resetrender函数在ajax提取请求之后不会触发。

如果我将它绑定到add它的作品。 我尝试绑定all到调试函数,它说sync事件与add并列调用每个项目。

+2

你可以试试this.collection.fetch({reset:true})? – nikoshr 2013-03-24 19:53:25

+0

@nikoshr谢谢你的工作!我认为这是暗示寿? – 2013-03-24 20:00:20

如果选中骨干change log,你会看到这样取1.0的处理改变:

更名为集合的“更新”设置,并行性与同类 model.set()并与重置进行对比。现在它是在获取之后的默认更新 机制。如果您想继续使用“复位”,通过 {reset: true}

因此,触发复位事件,你现在必须使用

this.collection.fetch({reset: true}) 
+0

酷感谢,这是一个新的应用程序,所以我只是切换到新的默认('集') – 2013-03-24 20:24:28

骨干1.0,你必须触发复位由手:

youColloection.fetch({reset: true});