我已经研究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"(给出的示例是将它设置为"identi"
一个新模型什么时候得到它的ID?服务器是否负责分配?我是否需要将其添加到模型的
defaults
中(可能作为一个函数)?也许addNewModel
函数应该这样做?
当保存到服务器时,它们应该会获得新的id,并且您不需要手动设置它(基于idattribute
),除非您需要对流程进行更多控制。
id-id可以在创建模型时手动设置,也可以在模型保存在服务器上时填充(请参阅底部的"idAttribute"以查看连接)。这是从服务器加载或更新模型时发送到服务器的id,例如,对于模型人员,如果id为123,"/perse/123",则会进行此呼叫
cid-唯一id设置我的主干模型供内部使用
idAttribute-这决定了当模型保存在服务器上时,哪个属性将充当唯一的id(默认为"id")。例如,模型在服务器上的唯一密钥可能由"personId"定义,因此当调用fetch时,模型将把服务器响应从"personId"映射到骨干模型中的id。
id
是服务器型号id,cid
是客户端id。
- 服务器模型:例如Rails模型
- 客户端模型:主干模型
模型上的id
属性是根据模型属性哈希中设置的id
自动分配的。理想情况下,这是您从正在查询的资源的其余API接收的ID。另一方面,cid
是临时分配给每个模型的ID,并且在确定对象的实际ID之前是有用的。例如,推送到尚未持久化的集合的模型可以使用cid
进行寻址,直到它被保存在数据库中并为其生成实际ID