我有一个非常简单的主干对话框,它只显示一个带有消息的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并显示之后,它将不会再次显示。这是因为如果我在messageDialog上做一个console.log(),我仍然会看到它是一个包含Backbone视图的变量。我以为在回调中调用remove()和unbind()之后,messageDialog变量会被垃圾回收。我需要做什么:
messageDialog = null;在unbind()之后?这是正确的做法吗?
发布于 2015-08-04 17:54:59
我认为.remove()就足够了,它将其从DOM中移除,并移除绑定的事件以避免幻影视图。
http://backbonejs.org/#View-remove
有什么原因myview.remove();不能满足您的需求吗?
希望能有所帮助。
https://stackoverflow.com/questions/31804975
复制相似问题