3

我知道,我們可以找到所有車型中收集像這樣,基於屬性查找模型,可是沒有骨幹集合中的屬性

var friends = new Backbone.Collection([ 
       {name: "Athos",  job: "Musketeer"}, 
       {name: "Porthos", job: "Musketeer"}, 
       {name: "Aramis",  job: "Musketeer"}, 
       {name: "d'Artagnan"}, 
      ]); 
friends.where({job: "Musketeer"}); 

但是我想找到它沒有按有屬性的模型,或鑰匙。怎麼做? 喜歡的東西

friends.where(not(job)); 

任何幫助是極大的讚賞

回答

2

我會嘗試這樣的事情,作爲朋友骨幹集合。

function isMusketeer() { 
    return friend.get('job') && friend.get('job') === "Musketeer"; 
} 
function hasNoJob() { 
    return !friend.get('job'); 
} 

friends.find(hasNoJob); //The first without a job 
friends.find(isMusketeer); //The first that is a musketeer 
friends.filter(hasNoJob); // List of results that has no job 
friends.filter(isMusketeer); // List of results that are musketeer 

我只是分開標準/謂詞,然後應用到集合強調功能,您需要,在這種情況下,可能是許多結果或一個結果,根據您的需要。

2

骨幹爲Backbone.Collection實例提供wide range of underscore methods。其中一種方法是Backbone.Collection.filter,它基於自定義函數的結果過濾集合中的模型。下面是如何可以使用例如:上述代碼

var friends = new Backbone.Collection([ 
    {name: "Athos",  job: "Musketeer"}, 
    {name: "Porthos", job: "Musketeer"}, 
    {name: "Aramis",  job: "Musketeer"}, 
    {name: "d'Artagnan"}, 
]); 

friends.filter(function(model) { 
    return _.isUndefined(model.get('job')); 
}); 

的jsfiddle:https://jsfiddle.net/Ljve5104/