骨干集合取不火重设()(backbone collection fetch doesn't

2019-07-23 02:31发布

这是我的一个集合视图

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

问题是,在render功能势必reset阿贾克斯后不火取请求。

如果我将其绑定到add它的工作原理。 我试着结合all的debuggin功能,它说的是, sync事件被称为旁边的add为每个项目。

Answer 1:

如果您检查骨干更改日志 ,你会看到这样获取的处理在1.0改为:

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

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

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


Answer 2:

在骨干网1.0,你必须手动触发复位:

youColloection.fetch({reset: true});


文章来源: backbone collection fetch doesn't fire reset()