【问题标题】:Application object triggers custom event twice? Marionette v1.1.0应用程序对象触发自定义事件两次?木偶 v1.1.0
【发布时间】:2013-08-22 14:03:52
【问题描述】:

我有一个集合 Days 实际上由 2 个集合共享 - 集合视图 v1 用于添加或删除日期(编辑),复合视图 v2 显示可点击链接以导航到各个日期的 itemView。

AppointmentManager = new Marionette.Application  //app object.
//sharing collection days among two views v1, v2.
var days = new Entities.Days(ApptModel.get("apptDays"));
var v1 = new EditCollectionView({collection: days});
var v2 = new ListCompositeView({collection: days});

要删除第 2 天的约会,用户单击 collectionview v1 中 dayItemView2 上的删除按钮,这也会导致从 collection view v1 中删除这一天,如下所示:

onDeleteDayClicked() {
    this.model.collection.remove(this.model);
}

这个删除也反映在视图 v2 中,因为集合在这两个视图之间共享。第 2 天的导航链接被 Marionette 从 v2 中自动删除。

集合 Days 在初始化时侦听此删除事件。为了确保这些更改在服务器端得到反映和保存(以及作为更大模型的一部分存储的其他信息,也存储天数),我在应用程序管理器上触发了一个保存事件:

 Entities.Days = Backbone.Collection.extend({
              initialize: function(options)    {
                    this.on("remove", function(model,collection,index) {
                            AppointmentManager.trigger("appts:save");
            }
});

但是在我的 ApptController 中,我收到了两次 apps:save 事件。我已经检查了 Collection Days 只收到一个删除事件并且只有一个模型被删除,因此 appts:save 触发器被称为。

    ApptManager.listenTo(ApptManager, "appts:save", function() {
        console.log("Saving appts!");
        appts.set("days", days);
        appts.save();
    });

“Saving appts”打印两次,appts PUT 两次!

有什么线索吗?!

使用 Marionette v1.1.0。 我还有其他显示标题导航栏视图和其他页面的模块和应用程序。我的应用程序结构基于 Backbone.Marionette.js: A Gentle David Sulc 的介绍 - 尽管我怀疑这种包装结构是否与这个问题有任何关系。

【问题讨论】:

  • 您是否尝试在ApptManager'appts:save' 事件处理程序中设置断点?了解这两个调用的调用堆栈是否/如何不同会很有启发性。
  • 调用栈是一样的
  • 您是否尝试过@Tigra 将console.log('init') 添加到initialize 的建议?我还会在remove 处理程序中添加一个,以查看初始化和/或回调是否被调用 2x。
  • 您是否发现了这一点,因为我遇到了完全相同的问题

标签: backbone.js marionette backbone-views backbone-events


【解决方案1】:

您究竟是如何分享您的收藏的?

将控制台日志添加到您的集合初始化
可能初始化方法调用了两次

【讨论】:

  • 看起来不错,但无论如何,尝试从您的集合初始化输出到控制台...看看它被调用了多少次
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多