Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js集合大小-Don';如果达到限制,则不显示_Backbone.js_Backbone.js Collections - Fatal编程技术网

Backbone.js集合大小-Don';如果达到限制,则不显示

Backbone.js集合大小-Don';如果达到限制,则不显示,backbone.js,backbone.js-collections,Backbone.js,Backbone.js Collections,我的主干集合中有以下代码 loadMore: function() { this.offset += 1; this.fetch({ data: { limit: 50, skip: this.offset }, remove: false, success: function(collection

我的主干集合中有以下代码

    loadMore: function() {
        this.offset += 1;
        this.fetch({
            data: {
                limit: 50,
                skip: this.offset
            },
            remove: false,
            success: function(collection) {
                var collectionSize = collection.length;

                console.log(collectionSize);

                if (collectionSize < this.sizeLimit) {
                    this.add(collection);
                } else {
                    eventer.trigger('products:end');
                }
            }.bind(this)
        });
    }
loadMore:function(){
该偏移量+=1;
这个,取回({
数据:{
限额:50,
跳过:这是偏移量
},
删除:false,
成功:功能(集合){
var collectionSize=collection.length;
console.log(collectionSize);
if(collectionSize

this.sizeLimit
硬编码为150(用于测试),但产品仍会继续添加到集合中,即使
collectionSize
的增长将超过限制。

这是因为
fetch
会在集合运行成功回调之前自动将结果添加到集合中

它保存对您发送的成功回调的引用,但随后运行自己的成功回调,该回调执行
收集。在调用您传入的结果之前,使用服务器结果设置
(或
重置


您可以通过清空集合来启动成功回调,然后添加任意数量的模型,但这会生成许多不必要的事件。取决于您希望有此限制的原因,您最好自己执行AJAX请求,而不使用主干同步,或者在其他地方实现此限制,例如在渲染时。

如ivarni所说,主干将在解析后自动将所有模型添加到集合中。但是,如果覆盖解析方法,则可以在以下步骤中丢弃不必要的项:

parse: function(data){
  return data.slice(0, this.sizeLimit);
}
parse: function(data){
  return data.slice(0, this.sizeLimit);
}