Backbone.js – id与idAttribute与cid
我一直在研究Backbone.js几个星期,我觉得在模型,路由器和集合中使用视图是很舒服的。
我还有一些很大的差距:
-
id
,cid
和idAttribute
之间的连接是什么? 他们如何互相影响? -
一个新的模型到底是什么时候得到它的ID? 服务器负责分配吗? 我是否需要将其添加到模型的
defaults
(可能作为一个函数)? 也许addNewModel
函数应该这样做?
id
,cid
和idAttribute
之间的连接是什么? 他们如何互相影响?
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。