我正在尝试通过查看我认识的人与骨干文档一起制作的应用程序来学习 Backbone。该应用程序有一个 Bucket 模型和一个 Company 模型(即您将公司放入桶中)。有一点我不清楚,即它是如何使用该trigger方法的。
骨干文档有这样的说法trigger:
扳机object.trigger(event, [*args])
触发给定事件或以空格分隔的事件列表的回调。触发的后续参数将传递给事件回调。
在我正在查看的代码中,trigger这样调用:
this.trigger("add:companies", Companies.get(companyId));
两个问题:
- 我 - event假设是- add一家公司,但在下面的代码中,这实际上是在什么时候发生的?是什么时候- this.set({ "companies": arr }, { silent: true });运行还是什么时候- this.save();运行(或其他)?
- 如果 - Companies.get(companyId)是可选参数,它实际传递给什么函数?
摘自原始代码
window.Bucket = Backbone.Model.extend({
  defaults: function() {
    return {
      companies: []
    };
  },
  addCompany: function(companyId) {
    var arr = this.get("companies");
    arr.push(companyId);
    this.set({ "companies": arr }, { silent: true });
    this.save();
    this.trigger("add:companies", Companies.get(companyId));
  },
  // ...