【问题标题】:Sum Backbone Collection总和骨干集合
【发布时间】:2015-04-02 20:56:54
【问题描述】:

我已经在 stackoverflow 中阅读了一些主题,但我没有找到解决问题的方法... 我想将我所有模型中“进度”字段的总和放入一个集合中...... 所以在我的收藏文件中我有:

  progressTotal: ->
    total = _.reduce(@, ((memo, value) ->
      memo + value.get('progress')
    ), 0)
    return total

但我得到那个值是未定义的......为什么?我从这里获得了灵感:Getting the sum of a collection (all models) with backbone.js 但该解决方案对我不起作用。

有什么建议吗?谢谢

编辑: 好像进度是一个字符串......但在我的数据库中是一个整数。

【问题讨论】:

  • 你可以做 memo + +value.get('progress') - 将字符串转换为整数

标签: backbone.js coffeescript underscore.js backbone.js-collections


【解决方案1】:

您应该将models 的数组传递给reduce 而不是集合,因此只需将@ 替换为@models

progressTotal: ->
    total = _.reduce(@models, ((memo, value) ->
      memo + value.get('progress')
    ), 0)
    return total

你也可以使用Backbone.Collection#reduce方法

progressTotal: ->
    return @reduce(((memo, value) ->
      memo + value.get('progress')
    ), 0)

【讨论】:

  • 我已经尝试过使用 Backbone.Collection#reduce 并且我也使用过您的代码,但是当我这样做时:console.log @milestones.progressTotal() 我得到 NaN。
  • 我也试过直接在函数中打印值:gist.github.com/anonymous/30dde77281c813461a32我总是得到 NaN。
  • 答案是正确的...我有一个问题,但它与我的收藏有关...如果我没有自己解决,我将在 Stackoverflow 上打开一个新问题。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多