Backbone.js 为什么collection.reset与collection.add类似?

Backbone.js 为什么collection.reset与collection.add类似?,backbone.js,backbone-views,signalr-hub,backbone.js-collections,backbone.signalr,Backbone.js,Backbone Views,Signalr Hub,Backbone.js Collections,Backbone.signalr,我有一个主干收集视图。当我通过backbone.signar hub重置集合时,我希望得到一个新的集合,我会通过我的hub重置集合,但它只是重置集合,然后像调用collection.add任何传递给它的东西一样工作。因此,我在集合中的模型中得到12个属性,前6个为空值,后6个为当前值 我的集合包含具有6个属性的模型。我想用新的6个值重置它们的值。但是我无法通过collection.reset() 在重置集合之前,我有一个包含以下6个属性的对象: customerId: 2, expec

我有一个主干收集视图。当我通过backbone.signar hub重置集合时,我希望得到一个新的集合,我会通过我的hub重置集合,但它只是重置集合,然后像调用
collection.add
任何传递给它的东西一样工作。因此,我在集合中的模型中得到12个属性,前6个为空值,后6个为当前值

我的集合包含具有6个属性的模型。我想用新的6个值重置它们的值。但是我无法通过
collection.reset()

在重置集合之前,我有一个包含以下6个属性的对象:

  customerId: 2, 
  expectedTimeOfService: "10 min",
  id: 6,
  noOfWaiting: 13, 
  queueName: "Cash Deposit",
  smsCode: "1234",
  CustomerId: null,
  ExpectedTimeOfService: null,
  Id: null,
  NoOfWaiting: null,
  QueueName: null,
  SmsCode: null,
  customerId: 2,
  expectedTimeOfService: "10 min",
  id: 6,
  noOfWaiting: 13,
  queueName: "Cash Deposit",
  smsCode: "1234",
重置集合后,我得到一个包含以下12个属性的对象:

  customerId: 2, 
  expectedTimeOfService: "10 min",
  id: 6,
  noOfWaiting: 13, 
  queueName: "Cash Deposit",
  smsCode: "1234",
  CustomerId: null,
  ExpectedTimeOfService: null,
  Id: null,
  NoOfWaiting: null,
  QueueName: null,
  SmsCode: null,
  customerId: 2,
  expectedTimeOfService: "10 min",
  id: 6,
  noOfWaiting: 13,
  queueName: "Cash Deposit",
  smsCode: "1234",

所以,我不知道问题出在哪里,也不知道怎样才能从这个问题中解脱出来。我只想在集合重置后用更新的值获取我的6属性值。

JavaScript区分大小写,因此
CustomerId
CustomerId
不同。当主干更新模型时,它找不到匹配的属性,因此会创建一个新属性

您应该在源代码处修复该问题,并将服务返回的JSON密钥更改为
lowerCamelCase

如果由于某种原因无法更改服务响应,则可以在
Model.parse中进行转换:

var Model = Backbone.Model.extend({
  parse: function (attrs) {
    var cleaned = {}
    _.each(attrs, function(val, key) {
      cleaned[key[0].toLowerCase() + key.slice(1)] = val;
    });
    return cleaned;
  }
});
并在重置时传递选项
parse:true

collection.reset(data, {parse:true});

非常感谢芬克利夫。虽然这是一个简单的问题,但有时很难抓住这样一个简单的问题。我刚刚解决了我的问题。再次感谢。@HannanHossain,不客气。如果问题解决了,别忘了将答案标记为已接受。