【问题标题】:Events in Backbone Relational: What are they for, what they do, and can the triggers be safely removed?Backbone Relational 中的事件:它们有什么用,它们做什么,触发器可以安全地删除吗?
【发布时间】:2013-01-26 01:00:11
【问题描述】:

我一直在尝试破译backbone.relational 源代码。我发现它会触发很多自己的事件。我对我的一些模型进行了日志记录,发现其中很多事件似乎无缘无故地触发了。

最大的问题是我应该听哪些事件以及哪些是内部事件

Backbone.Relational 似乎触发的事件是:

  • 更新:[属性] 似乎触发 [第 725、941 行]
  • relational:add 当在集合上调用 .add() 时,这似乎会触发
  • relational:remove 当在集合上调用 .remove() 时,这似乎会触发 [1651, 1003]
  • relational:reset 这个似乎没有韵律或理由(为什么在排序时被解雇!!!)[1664, 1675]
  • relational:change:[attribute]:不知道这是做什么的 [1138]

有人可以解释每个的目的是什么以及是否可以从源中删除某些触发器

为了比较,Backbone 的原生事件:

  • “add”(模型、集合、选项)— 将模型添加到集合时。
  • “remove”(模型、集合、选项)— 当模型从集合中移除时。
  • "reset" (collection, options) — 当集合的全部内容被替换时。
  • "sort" (collection, options) — 当集合被重新排序时。
  • "change" (model, options) — 当模型的属性发生变化时。
  • "change:[attribute]" (model, value, options) — 当特定属性被更新时。
  • “destroy”(模型、集合、选项)— 当模型被销毁时。
  • "request" (model, xhr, options) — 当模型(或集合)开始向服务器发出请求时。
  • "sync" (model, resp, options) — 当模型(或集合)与服务器成功同步时。
  • "error" (model, xhr, options) — 当模型的保存调用在服务器上失败时。
  • “invalid”(模型、错误、选项)— 当模型在客户端上的验证失败时。
  • "route:[name]" (params) — 匹配特定路由时由路由器触发。
  • "route" (router, route, params) — 当任何路由匹配时由历史记录(或路由器)触发。
  • "all" — 此特殊事件会针对任何触发的事件触发,将事件名称作为第一个参数传递。

【问题讨论】:

    标签: backbone.js backbone-relational


    【解决方案1】:

    Backbone.Relational readme 中非常清楚地说明了每个事件的目的:

    • 将新事件绑定到Backbone.RelationalModel,用于:
      • 添加到HasMany 关系(绑定到add:<key>
      • HasMany 关系中删除(绑定到remove:<key>
      • 重置HasMany 关系(绑定到reset:<key>
      • HasManyHasOne 关系上更改密钥本身(绑定到update:<key>

    至于你应该听哪些事件:如果你需要的话,所有的。这就是为什么他们在那里,并记录在案。

    至于哪些是内部使用的,可以在Backbone.Relational source找到答案。如果您在源文件中搜索.bind,您会看到它在内部侦听以下事件:

    • relational:add
    • relational:remove
    • relational:change:key
    • relational:reset

    所以我怀疑任何事件触发器都可以从源中“安全”地删除。一般来说,我会说修补库源是解决问题的错误方法。

    您在过去几天发布了一些与 Backbone.Relational 事件相关的问题。也许尝试解释为什么这些事件会导致问题,我们会寻找解决方法?

    【讨论】:

    • 嗯,在从服务器来回保存时,我基本上花了很多时间来处理主干事件。我第一次从服务器加载所有内容时一切都很好,但是在保存之后,事情就开始因事件而变得混乱(开始疯狂地从我的模型中添加/删除)。所以我试图摆脱尽可能多的无关事件以更容易调试。周一上班后,我会尝试记录更多我遇到的问题。
    猜你喜欢
    • 2020-01-07
    • 2016-10-23
    • 2020-09-25
    • 2016-10-24
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    相关资源
    最近更新 更多