Backbone.js – id与idAttribute与cid

我一直在研究Backbone.js几个星期,我觉得在模型,路由器和集合中使用视图是很舒服的。

我还有一些很大的差距:

  1. idcididAttribute之间的连接是什么? 他们如何互相影响?

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

idcididAttribute之间的连接是什么? 他们如何互相影响?

cid和id都应该是模型的唯一id,可以用来从集合中检索模型。

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

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

当保存到服务器时,他们应该得到新的id,除非需要更多的控制idattribute否则不需要手动设置(基于idattribute )。

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

cid – 唯一id设置我的骨干模型供内部使用

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

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

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

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