2014-10-29 75 views
1

我有一个奇怪的错误,其中函数(钛合金,有点同质)返回空,而fetch方法返回模型列表。伊夫检查了一遍又一遍,我试图把其中函数的获取方法的成功回调,但它仍然会导致一个无法解决的错误Backbone在获取回调中返回空

Alloy.Collections.favorites.fetch({ 
    success: function(collection) { 
      console.log(JSON.stringify(collection)); 
      console.log(self.get('id')); 
      var favorite = collection.where({ 
       jobId: self.get('id') 
      }); 
      console.log(JSON.stringify(favorite)); 
}); 

以上输出是:

[{"jobId":5162179,"dateAdded":1414590144,"candidateId":99,"id":19},{"jobId":5161302,"dateAdded":1414588983,"candidateId":99,"id":17},{"jobId":5161437,"dateAdded":1414588785,"candidateId":99,"id":16}] 
5161437 
[] 

哪有上述事情发生?怎么能重现这个?该集合是否被占用或者是钛合金中的一个错误?此过程是视图(视图A)上数据绑定的一部分,此确切代码适用于不同部分,唯一不同之处在于视图A不直接受集合中的更改影响。

任何帮助?这甚至有可能与骨干?我不能让我的头围绕这个

+0

尝试'console.log(最喜欢);'即。不会将其字符串化 – benhowdle89 2014-10-29 14:12:37

+0

当您通过'JSON.stringify'对整个集合进行序列化时,会隐式调用['toJSON'](http://backbonejs.org/#Collection-toJSON)方法,将集合转换为JSONable数组。但是当你尝试序列化'collection.where'的结果时,这会导致错误,因为['collection.where'](http://backbonejs.org/#Collection-where)返回**不能成为模型的数组**直接序列化为JSON。 – hindmost 2014-10-29 15:04:18

回答

2

显然。哪里函数严格比较2倍的值(===运营商),我给了一个string的形式,而在集合中的ID是一个integer的ID。太糟糕的主干文件没有说明这个信息

+0

上周我犯了同样的错误:) – phil 2014-10-30 01:33:09