让我们假设您的每一条推文都有一个唯一的标识符(如果没有,您可能应该创建一个)。
您可以以这样的方式构建您的后端,默认情况下,如果您致电,它会为您提供 10 条最新的推文http://your.site.com/tweets http://your.site.com/tweets没有任何争论。
如果您致电http://your.site.com/tweets?last_tweet_id=BLAblaBlA http://your.site.com/tweets?last_tweet_id=BLAblaBlA,它将为您提供您指定的last_tweet_id 之后的 10 条最新推文。
您可以通过实现 YourCollection.sync 方法来覆盖从后端获取数据到 Collection 中的代码。
原因:Backbone.Collection首先尝试调用Collection.sync,如果它没有实现,它会调用Backbone.sync函数,所以如果你实现了YourCollection.sync,它将被使用。这是 Backbone.Collection.fetch 函数的片段:
(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);
}
}
您必须重写集合解析函数,以确保将响应附加到现有的模型数组中。