47

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

我还有一些很大的差距:

  1. id, cid, 和之间有什么联系idAttribute?它们如何相互影响?

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

4

4 回答 4

60

id, cid, 和之间有什么联系idAttribute?它们如何相互影响?

cidid都应该是模型的唯一 id,并且可以用于集合中检索模型。

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

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

他们应该在保存到服务器idattribute时获得新的 id,除非您需要对流程进行更多控制,否则您不需要手动设置它(基于)。

于 2012-08-29T02:08:16.450 回答
7

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

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

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

于 2012-08-29T02:09:44.810 回答
1

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

  • 服务器模型:如 Rails 模型
  • 客户模型:骨干模型
于 2015-07-14T02:54:07.740 回答
0

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

于 2017-04-10T11:52:12.180 回答