我在一个页面应用程序中使用Marionette和Backbone来管理视图的打开和关闭。
当项目视图关闭时(例如,其模型已从绑定集合中删除),项目视图中的事件将被正确销毁。
然而,在我使用jquery动画或setTimeout的情况下,“成功”回调仍然被触发并且不变会触发异常,因为他们正在寻找的DOM元素不再出现在页面上。
e.g。
setTimeout(function () {
self.ui.$loading.fadeIn(528);
}, 1000);
处理这些案件的正确方法是什么?我应该只是检查DOM元素是否存在,或者使用try catch还是有一个更加优雅的Marionette内置解决方案,我不知道?
延期承诺会更好吗?
答案 0 :(得分:0)
将它们绑定到视图并使用onBeforeClose事件删除它们。
class TheView extends Marionette.ItemView
initialize: ->
@doomsday = setTimeout ->
console.log 'boom'
, 3000
onBeforeClose: ->
@doomsday.clearTimeout()
这样的事情应该有效,但这取决于你保持所有的超时或间隔检查