我有一个Collection,它指定一个本身具有idAttribute集的Model,因为我的后端使用主键的自定义字段。代码是这样的:
var SearchItemModel = Backbone.Model.extend({
idAttribute: 'searchDefId'
});
var savedSearchesCollection = new SavedSearchesCollection({
model: SearchItemModel
});
我的理解是,我应该能够通过that.collection.get(searchDefIdValue)
找到模型,但我做不到。下面,您可以看到我的收藏品有两种型号。如果我试图基于Backbone的'c44'的cid获得模型,那么它可以发现没问题。但是,如果我尝试搜索自定义ID字段'searchDefId',则无法找到它。我认为Backbone应该将idAttribute的值复制到id中,但是我没有看到任何'id'字段。
另请注意,我可以使用that.collection.where({ searchDefId: data.searchDefId})[0]
找到该模型,但这看起来可能更贵。
答案 0 :(得分:2)
我认为问题在于,当options
期望它SavedSearchesCollection
时,您将Backbone.Collection
作为第一个参数传递给models
。 model
上缺少that.collection
属性也证明了这一点。
尝试
var savedSearchesCollection = new SavedSearchesCollection([], {
model: SearchItemModel
});