1

我已經在這裏閱讀了一些在stackoverflow的話題,但是我沒有找到解決我的問題的方法...... 我想在我的所有模型中將'progress'字段的總和寫入一個集合。 .. 所以在我的集合文件我有:Sum Backbone Collection

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

但我得到的價值是不確定的,爲什麼?我從這裏獲得靈感:Getting the sum of a collection (all models) with backbone.js但該解決方案對我無效。

什麼建議嗎?謝謝

編輯:似乎如果progress是一個字符串......但在我的db是一個整數。

+0

你可以做備忘錄+ +價值。 get('progress') - 將字符串強制轉換爲整數 – francpaul 2015-04-06 18:19:02

回答

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) 
+0

我已經使用Backbone.Collection#reduce嘗試過,我也使用過你的代碼,但是當我這樣做時:console.log @ milestones.progressTotal ()我得到NaN。 – Riccardo 2015-04-02 22:03:41

+0

我也嘗試直接在函數中打印值:https://gist.github.com/anonymous/30dde77281c813461a32我總是得到NaN。 – Riccardo 2015-04-02 22:15:47

+0

答案是正確的......我有一個問題,但它與我的集合有關......如果我沒有自己修復,我會在Stackoverflow上打開一個新問題。謝謝。 – Riccardo 2015-04-02 23:02:11