【问题标题】:Cancelling timeouts in a Marionette Backbone view that has closed在已关闭的 Marionette Backbone 视图中取消超时
【发布时间】:2014-01-27 22:12:02
【问题描述】:

我在单页应用中使用 Marionette 和 Backbone 来管理视图的打开和关闭。

当 itemview 关闭时(例如,它的模型已从绑定集合中删除),itemview 中的事件被正确销毁。

但是,在我使用 jquery 动画或 setTimeout 的情况下,仍然会触发“成功”回调并且不变地触发异常,因为它们正在寻找的 DOM 元素不再在页面上。

例如

setTimeout(function () {
        self.ui.$loading.fadeIn(528);
    }, 1000);

处理这些情况的正确方法是什么?我应该简单地检查 DOM 元素是否存在,还是使用 try catch 或者是否有一个我不知道的 Marionette 内置的更优雅的解决方案?

延迟承诺会更好吗?

【问题讨论】:

    标签: javascript backbone.js marionette


    【解决方案1】:

    将它们绑定到视图并使用 onBeforeClose 事件将它们移除。

    class TheView extends Marionette.ItemView
        initialize: ->
            @doomsday = setTimeout ->
                console.log 'boom'
            , 3000
    
        onBeforeClose: ->
            @doomsday.clearTimeout()
    

    类似的东西应该可以工作,但这取决于你是否控制所有超时或间隔

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 2015-07-27
      • 2013-03-31
      • 2013-01-15
      相关资源
      最近更新 更多