Backbone.js - id vs idAttribute vs cid

时间:2012-08-29 01:42:29

标签: javascript jquery ajax backbone.js underscore.js

我已经研究了Backbone.js几周了,我觉得使用模型,路由器和集合的视图很舒服。

我仍然有一些很大的差距:

  1. idcididAttribute之间的联系是什么?它们如何相互影响?

  2. 新型号何时获得其ID?服务器负责分配它吗?我是否需要将其添加到模型的defaults(可能作为函数)?也许addNewModel函数应该这样做?

4 个答案:

答案 0 :(得分:58)

  

idcididAttribute之间的联系是什么?它们如何相互影响?

cidid都应该是模型的唯一ID,并且可以用于retrieve模型from集合。

两者之间的区别在于cid由backbone.js客户端分配,如果您没有实际ID,则非常有用,因为模型尚未保存到服务器或者你甚至没有把它保存到db(也许你正在使用localStorage)。 id属性应该是来自服务器的模型的ID(即数据库中的id)。 idAttribute告诉主干哪个“字段”来自您的服务器,它应该用来更新id属性,默认情况下,它设置为“id”,但正如documentation中所说的那样服务器使用其他东西你可以设置它(给出的例子是将其设置为“_id”。

  

新型号何时获得其ID?服务器负责分配它吗?我是否需要将其添加到模型的defaults(可能作为函数)?也许addNewModel函数应该这样做?

他们应该在保存到server时获取新ID,并且您不需要手动设置(基于idattribute),除非您需要对此过程进行更多控制。

答案 1 :(得分:7)

id-id可以在创建模型时手动设置,也可以在模型保存在服务器上时填充(请参阅底部的“idAttribute”以查看连接)。这是从服务器加载或更新模型时发送到服务器的id,例如,对于模型Person,如果id为123,则会调用此人,“/ person / 123”

cid - 唯一ID设置我的内部使用骨干模型

idAttribute - 当模型已保存在服务器上时,它决定哪个属性将作为唯一ID(默认为“id”),例如,服务器上模型的唯一键可能由“personId”定义,所以当fetch被称为模型将服务器响应从“personId”映射到骨干模型中的id。

答案 2 :(得分:1)

id是服务器型号ID,cid是客户端ID。

  • 服务器型号:例如Rails Model
  • 客户端模型:骨干模型

答案 3 :(得分:0)

模型上的id属性是根据模型属性哈希中设置的id自动分配的。理想情况下,这是您从正在查询的资源的其余API收到的ID。另一方面,cid是临时分配给每个模型的ID,在确定对象的实际ID之前是有用的。例如,可以使用cid来解决推送到尚未保留的集合的模型,直到将其保存在数据库中并为其生成实际ID。