无法让idAttribute在Backbone中工作

时间:2013-09-10 21:16:52

标签: javascript backbone.js

我有一个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]找到该模型,但这看起来可能更贵。

console output

1 个答案:

答案 0 :(得分:2)

我认为问题在于,当options期望它SavedSearchesCollection时,您将Backbone.Collection作为第一个参数传递给modelsmodel上缺少that.collection属性也证明了这一点。

尝试

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