Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法使idAttribute在主干中工作_Javascript_Backbone.js - Fatal编程技术网

Javascript 无法使idAttribute在主干中工作

Javascript 无法使idAttribute在主干中工作,javascript,backbone.js,Javascript,Backbone.js,我有一个集合,它指定一个模型,该模型本身有一个idAttribute集,因为我的后端使用一个自定义字段作为主键。代码如下所示: var SearchItemModel = Backbone.Model.extend({ idAttribute: 'searchDefId' }); var savedSearchesCollection = new SavedSearchesCollection({ model: SearchItemModel }); 我的理解是,我应该能够通

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

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

var savedSearchesCollection = new SavedSearchesCollection({
    model: SearchItemModel
});
我的理解是,我应该能够通过执行
that.collection.get(searchDefIdValue)
找到模型,但我不能。下面,您可以看到我的系列有两种型号。如果我试图得到基于主干网的cid'c44'的模型,那么它会发现没有问题。但如果我尝试在自定义id字段“searchDefId”上搜索,它将找不到它。我以为主干应该将idAttribute的值复制到id中,但我没有看到任何“id”字段

还要注意的是,我可以使用
that.collection.where({searchDefId:data.searchDefId})[0]
找到模型,但这似乎更昂贵


我认为问题在于,当
主干时,您将
选项作为第一个参数传递给
SavedSearchCollection
。Collection
希望它是
模型
。这也可以通过
that.collection
上缺少
model
属性来证明

试一试


通常在创建
savedsearchescolection
时指定
model:SearchItemModel
,而不是在实例化集合时指定。运气不好。我很确定这是一个可选参数。否则视图将如何工作。@muistooshort:与主干中的大多数内容一样,您可以在类中或在创建实例时指定它。主干文档本身表明这是双向的:@TNguyen:因此通常是限定条件。我还没有看到过在定义集合时不指定
模型
的情况。如果你仍然有问题,那么也许你需要为你的问题建立一个功能性的例子,这样我们就可以看到到底发生了什么。奇怪。看来你是对的,穆。这不要紧,但在类中指定模型而不是实例会有所不同。如果你把这个作为答复,我会接受的。FWIW,我总是尝试在实例化中指定参数。它通过声明“我想创建一个这种类型的对象,但具有这些特定属性”,使类更加通用,更具语义。Collection类不需要知道它处理的是什么模型。它不应该在意。
var savedSearchesCollection = new SavedSearchesCollection([], {
    model: SearchItemModel
});