我已经研究了Backbone.js几周了,我觉得使用模型,路由器和集合的视图很舒服。
我仍然有一些很大的差距:
id
,cid
和idAttribute
之间的联系是什么?它们如何相互影响?
新型号何时获得其ID?服务器负责分配它吗?我是否需要将其添加到模型的defaults
(可能作为函数)?也许addNewModel
函数应该这样做?
答案 0 :(得分:58)
id
,cid
和idAttribute
之间的联系是什么?它们如何相互影响?
cid和id都应该是模型的唯一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。
答案 3 :(得分:0)
模型上的id
属性是根据模型属性哈希中设置的id
自动分配的。理想情况下,这是您从正在查询的资源的其余API收到的ID。另一方面,cid
是临时分配给每个模型的ID,在确定对象的实际ID之前是有用的。例如,可以使用cid
来解决推送到尚未保留的集合的模型,直到将其保存在数据库中并为其生成实际ID。