我有一个非常简单的主干对话框,只显示带有消息的bootstap模式。我在整个应用程序中使用它并构建它,以便您传递要显示的标题和消息,并在单击按钮时执行回调。我有一个errorListener,在那里创建视图,附加到DOM并呈现:
var messageDialog;
var callback = function() {
....
messageDialog.remove();
messageDialog.unbind();
};
....
var errorListener = function() {
if (!messageDialog) {
messageDialog = new MessageDialog({
title: 'Error',
message: 'We have encountered an error. Please try again.',
buttonText: 'Try Again'
});
$('body').append(messageDialog.$el);
messageDialog.render();
}
messageDialog.setCallback(tryAgain);
messageDialog.show();
}
问题是在第一次创建messageDialog
之后,附加到DOM并显示,它不会再次显示。这是因为如果我在console.log()
上执行messageDialog
,我会看到它是一个包含Backbone视图的变量。我想在回调中调用remove()
和unbind()
之后,messageDialog
变量将被垃圾收集。我需要做什么:
messageDialog = null;
unbind()
之后?这是正确的做事方式吗?
答案 0 :(得分:0)
我认为.remove()就足够了,它会从DOM中删除它,并删除绑定事件以避免幻像。
http://backbonejs.org/#View-remove
是否有任何理由myview.remove();不满足你的需求吗?
希望它有所帮助。