取消已关闭的Marionette Backbone视图中的超时

时间:2014-01-27 22:12:03

标签: javascript backbone.js marionette

我在一个页面应用程序中使用Marionette和Backbone来管理视图的打开和关闭。

当项目视图关闭时(例如,其模型已从绑定集合中删除),项目视图中的事件将被正确销毁。

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

e.g。

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

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

延期承诺会更好吗?

1 个答案:

答案 0 :(得分:0)

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

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

    onBeforeClose: ->
        @doomsday.clearTimeout()

这样的事情应该有效,但这取决于你保持所有的超时或间隔检查