假设您的每条推文都有一个唯一标识符(如果没有,您应该创建一个)。
您可以这样安排您的后端,默认情况下,如果您在没有任何参数的情况下调用 http://your.site.com/tweets,它会为您获取 10 条最新推文。
如果您致电http://your.site.com/tweets?last_tweet_id=BLAblaBlA,它将为您提供 10 条最新推文,这些推文位于您指定的 last_tweet_id 之后。
您可以通过实现 YourCollection.sync 方法覆盖将数据从后端获取到您的集合中的代码。
原因:Backbone.Collection首先尝试调用Collection.sync,如果没有实现,它会调用Backbone.sync函数,所以如果你实现了YourCollection.sync,它将被使用。这是 Backbone.Collection.fetch 函数的 sn-p:
(this.sync || Backbone.sync)('read', this, success, error);
所以你的同步会是这样的
var TweetCollection = Backbone.Collection.extend({
model: TweetModel,
sync: function(method, collection, success, error) {
var requestData={};
if(collection.length>0) {
requestData.last_tweet_id=collection.last.id
}
var params = {
url: "/tweet",
type: "POST",
data: requestData,
success: success,
error: error
};
$.ajax(params);
}
}
您必须覆盖您的集合解析函数,以确保将响应附加到现有的模型数组中。