2011-12-16 71 views
3

我有通知使用Backbone.js&Underscore,如何獲取模型中的物品數量?

// MODEL 
NotificationModel = App.BB.Model.extend({ 
    defaults : {} 
}); 


// COLLECTION 
NotificationCollection = App.BB.Collection.extend({ 
    model: NotificationModel, 
    url: '/notifications', 

    initialize : function() { 
     var me = this; 
     me.fetch(); 
    } 

}); 

收集從服務器獲取正確的一個通知模型,並具有以下字段(ID,讀),而讀是真還是假。

如何獲取讀取的項目總數== false? ...未讀項目數量?

感謝

回答

9

結構化的解決方案是建立在您的收藏這些方法:

read: function() { 
    return this.filter(function(n) { return n.get('read'); }); 
}, 

unread: function() { 
    return this.filter(function(n) { return !(n.get('read')); }); 
} 

如果您需要的數量,就可以只需在方法的末尾添加.length即可。

7

使用下劃線的filter method和一般的JavaScript .length schould做到這一點。

骨幹的文檔有an example of filter,你只需要返回閱讀等於false。

var unread = Notes.filter(function(note) { 
    return note.get("read") === false; 
}).length; 

從我的手機提交,比較遺憾的是簡短的答案

0

Backbone Collection的where method可能有用。

var read = this.where({ read: true }); 
var unread = this.where({ read: false }); 

如果read不是truefalse這不起作用 - 在這種情況下,你應該使用filter爲其他答案建議。

相關問題