0

我有一个集合,它指定一个模型,它本身有一个 idAttribute 集,因为我的后端使用自定义字段作为主键。代码是这样的:

var SearchItemModel = Backbone.Model.extend({
    idAttribute: 'searchDefId'
});

var savedSearchesCollection = new SavedSearchesCollection({
    model: SearchItemModel
});

我的理解是我应该能够通过做找到模型that.collection.get(searchDefIdValue),但我不能。下面,你可以看到我的收藏有两个模型。如果我尝试基于 Backbone 的 cid 'c44' 来获取模型,那么它可以发现它没有问题。但是,如果我尝试在自定义 ID 字段“searchDefId”上进行搜索,则找不到它。我认为 Backbone 应该将 idAttribute 的值复制到 id 中,但我没有看到任何“id”字段。

另请注意,我可以找到使用的模型,that.collection.where({ searchDefId: data.searchDefId})[0]但似乎它可能更贵。

控制台输出

4

1 回答 1

2

我认为问题在于您将options第一个参数作为第一个参数传递给SavedSearchesCollectionwhenBackbone.Collection期望它是models. 这也证明了 缺乏model属性that.collection

尝试

var savedSearchesCollection = new SavedSearchesCollection([], {
    model: SearchItemModel
});
于 2013-09-10T21:42:36.140 回答