簡體   English   中英

主干集合提取不會觸發重置()

[英]backbone collection fetch doesn't fire reset()

這是我對集合的看法

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一起被調用。

如果檢查主干更改日志 ,您將看到在1.0中更改了fetch的處理方式:

重命名Collection的“更新”以設置,與類似的model.set()並行,並與reset對比。 它現在是獲取后的默認更新機制。 如果您想繼續使用“重置”,請通過{reset: true}

因此,要觸發重置事件,您現在必須使用

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

在主干1.0中,你必須手動觸發重置:

youColloection.fetch({reset: true});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM