簡體   English   中英

如何檢查主干集合是否已包含具有相同idAttribute的模型?

[英]How to check if a backbone collection already contains a model with the same idAttribute?

我的主干模型的idAttribute可以是任何值(Backbone的默認值為“ id”)。 我想在將模型插入Backbone集合之前檢查該集合是否已包含具有相同idAttribute值的模型。

myCollection.contains(myNewModel)始終返回false 我猜這是因為候選模型不一定與集合中已經存在的實例相同。

我試過了

idAttribute: string = myColllection.model.prototype.idAttribute; // Works fine
let id: string = itemToInsert.get(idAttribute); // Works fine
let exists : boolean : myCollection.findWhere({ idAttribute : id }); // Undefined!

我想要類似的東西

let test: boolean = _.any(self.collection, item => idAttributeValue === item.get("idAttribute")).value();

但我不確定確切的語法。

您可以使用Collection.get來確定集合是否具有具有給定id的模型,而與基礎idAttribute

例如,

 var M = Backbone.Model.extend({ idAttribute: 'whatever' }); var C = Backbone.Collection.extend({ model: M, hasModel: function(input) { return !!this.get(input); } }); var c = new C([{whatever : 1}]); console.log(c.hasModel(1)); // true console.log(c.hasModel(2)); // false var newModel = new M({whatever: 1}); console.log(c.hasModel(newModel)); // true 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.2.3/backbone-min.js"></script> 

如果要使用findWhere ,則必須對屬性的哈希使用方括號表示法

var finder = [];
var idAttribute = M.prototype.idAttribute;
finder[idAttribute] = 1;
console.log(c.findWhere(finder));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM