用for循环替换.each

时间:2014-12-12 12:22:20

标签: javascript jquery backbone.js

var _this = this,
    fragment = document.createDocumentFragment();

this.limitedCollection.each(function(model) {
    fragment.appendChild(_this.renderModel(model)[0]);
});

我想将上面的内容更改为循环,直到maximumDisplayedItems而不是集合中的所有项目。

类似的东西:

var _this = this,
    fragment = document.createDocumentFragment();

for (var i = 0; i < this.maximumDisplayedItems; i++) {
    // do stuff
};

3 个答案:

答案 0 :(得分:1)

这样的事情可以解决问题:

for (var i = 0; i < this.limitedCollection.length && i < this.maximumDisplayedItems; i++) {
    fragment.appendChild(_this.renderModel(limitedCollection[i])[0]);
};

答案 1 :(得分:0)

如果您的limitedCollectionBackbone.Collection,您可以访问以下型号:

fragment = document.createDocumentFragment();
var models = this.limitedCollection.models; // array of Backbone.Model objects, 
var modelsLength = models.length;
for (var i = 0; i < modelsLength && i < this.maximumDisplayedItems; i++) {
  fragment.appendChild(_this.renderModel(models[i])[0]);
};

答案 2 :(得分:-2)

只需使用该集合的first方法:

this.limitedCollection.first(maximumDisplayedItems).forEach(function(model) {
    fragment.appendChild(_this.renderModel(model)[0]);
});
分页

slice

var page = 1,
    maximumDisplayedItems = 10,
    start = (page - 1) * maximumDisplayedItems;

this.limitedCollection.slice(start, start + maximumDisplayedItems).forEach(function(model) {
    fragment.appendChild(_this.renderModel(model)[0]);
});