【问题标题】:Backbone.js - id vs idAttribute vs cidBackbone.js - id vs idAttribute vs cid
【发布时间】:2012-08-29 01:42:29
【问题描述】:

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

我还有一些很大的差距:

  1. idcididAttribute 之间有什么联系?它们如何相互影响?

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

【问题讨论】:

    标签: javascript jquery ajax backbone.js underscore.js


    【解决方案1】:

    idcididAttribute 之间有什么联系?它们如何相互影响?

    cidid 都应该是模型的唯一 ID,并且可以用于 retrieve 模型 from 集合。

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

        • 服务器模型:如Rails模型
        • 客户端模型:骨干模型

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-11-03
            • 2011-06-30
            • 2011-11-07
            • 1970-01-01
            • 1970-01-01
            • 2016-12-31
            • 2014-10-05
            • 2013-01-30
            相关资源
            最近更新 更多