Backbone关系中的事件:它们是什么,它们做了什么,是否可以安全地删除触发器?

时间:2013-01-26 01:00:12

标签: backbone.js backbone-relational

我一直试图破译backbone.relational源代码。我发现它引发了很多自己的事件。我对我的一些模型进行了记录,发现很多这些事件似乎无缘无故。

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

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

  • 更新:[属性]似乎解雇了[Line 725,941]
  • relational:add当一个集合
  • 上调用.add()时,这个似乎就会触发
  • relational:remove当一个集合[1651,1003]上调用.remove()时,这个似乎会触发。
  • 关系:重置这个似乎没有押韵或理由(为什么被解雇!!!)[1664,1675]
  • relational:change:[attribute]:不知道这是做什么的[1138]

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

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

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

1 个答案:

答案 0 :(得分:4)

每个事件的目的都在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事件相关的问题。也许试着解释为什么导致问题的事件,我们会寻找一个解决方法?