繁体   English   中英

遍历集合中的数组

[英]iterate through an array in a collection

因此,我对Backbone还是很陌生。 我的问题是这样的:我有一个这样的集合:

...
isCollection: true,
parse: function(response) {
    if (response.status == 'ok') {
        this.page = response.result.page;
        this.count = response.result.count;
        this.total = response.result.total;
        this.sort = response.result.sort;
        this.ascending = response.result.ascending;
        this.myReports = response.result.results;
        return this;
    } else {

    }

其中this.myReports是对象数组。 我的问题是如何遍历数组(myReports)? 我必须将其转换为收藏集吗? 如果我尝试使用.each,则会收到有关不支持.each的错误。

谢谢你的帮助!

您是否尝试过像一个简单的js数组那样遍历它?

就像是:

for(var i in myArray){
   var item = myArray[i];
   //dosomething
}

也许值得尝试使用underscorejs获得高级数组功能。

我将以这种方式将response.result.results的元素放入集合中:

parse: function(response) {
    if (response.status == 'ok') {
        this.page = response.result.page;
        this.count = response.result.count;
        this.total = response.result.total;
        this.sort = response.result.sort;
        this.ascending = response.result.ascending;
        return response.result.results;
    } else {

    }
}

现在,如果fetch集合成功,并且response.status'ok' ,则:

  • 您的集合将包含名为pagecounttotalsortascending字段,
  • 这些字段将包含您作为response.result字段获得的值,
  • length的集合将是lengthresponse.result.results ,和
  • 集合的项目将是response.result.results的项目,因此您可以在fetchsuccess处理程序中对其进行迭代

如果fetch失败,或者response.status不是'ok' ,则集合的长度将为零。 字段pagecounttotalsortascending将是undefined ,除非您在某个地方定义了它们,例如在上述parse函数内的initializeelse分支中定义的地方。

是一个工作示例。 输出打印在控制台中,因此例如在Chrome中,按F12键并切换到“控制台”选项卡。 无论如何,因为骨干集合有一个名为方法sort ,我会的名称更改sort字段别的东西( sortedtoBeSorted ,等等-我不知道这个领域的语义)。

当您在Backbone集合上调用myCollection.each时,您实际上是在调用Underscore的each方法,但是作为Backbone.Collection方法向您展示的方法更好。

您可以只在数组上使用该方法:

_.each(this.myReports, function (report) {
  // do whatever with report
})

是否应该将其转换为骨干集合是另一个问题。 如果要在其中存储模型,或使用任何Backbone.Collection功能,请确保使用上面的每种方法进行转换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM