2015-05-29 53 views
1
this.keysCollection.pop(); 

刪除最後一個是非常簡單的,但我希望非常喜歡做的是這(僞解決方案):骨幹 - 刪除最後一個模型集合,但只能通過過濾器

this.keysCollection.pop({ type: 'foo' }); 

而且爲它從集合中刪除最後一個匹配模型。可能?

編輯:

去與此 -

const models = this.where({ type: 'foo' }); 
const model = models[models.length - 1]; 
this.remove(model); 
+0

您可以使用[findWhere(http://backbonejs.org/#Collection-findWhere)來獲取模型,然後傳遞到[刪除](http://backbonejs.org/#Collection -remove) – Jack

+0

@Jack當然,但是這必然會尊重流行與刪除最後一個? – benhowdle89

+0

彈出[代表](https://github.com/jashkenas/backbone/blob/master/backbone.js#L910)刪除,只爲最後一個元素。 – Jack

回答

2

流行音樂其實只是得到最後一個元素,然後調用卸下結果,從backbone source

pop: function(options) { 
     var model = this.at(this.length - 1); 
     this.remove(model, options); 
     return model; 
    }, 

既然是這樣的話您只需使用where即可獲得與您的過濾器匹配的模型,然後將結果中的最後一個模型傳遞給remove如果。

var matchingModels = this.where({type: 'foo'}); 
this.remove(matchingModels[matchingModels.length - 1]);