首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从内存中完全删除Backbone视图

问从内存中完全删除Backbone视图
EN

Stack Overflow用户
提问于 2015-08-04 17:02:46
回答 1查看 30关注 0票数 0

我有一个非常简单的主干对话框,它只显示一个带有消息的bootstap模式。我在整个应用程序中使用它,并构建了它,以便您传递要显示的标题和消息,以及要在单击按钮时执行的回调。我有一个errorListener,在那里视图被创建,附加到DOM并呈现:

代码语言:javascript
复制
    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变量会被垃圾回收。我需要做什么:

代码语言:javascript
复制
messageDialog = null;

在unbind()之后?这是正确的做法吗?

EN

回答 1

Stack Overflow用户

发布于 2015-08-04 17:54:59

我认为.remove()就足够了,它将其从DOM中移除,并移除绑定的事件以避免幻影视图。

http://backbonejs.org/#View-remove

有什么原因myview.remove();不能满足您的需求吗?

希望能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31804975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档