从内存中完全删除Backbone视图

时间:2015-08-04 09:02:46

标签: javascript backbone.js

我有一个非常简单的主干对话框,只显示带有消息的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()之后?这是正确的做事方式吗?

1 个答案:

答案 0 :(得分:0)

我认为.remove()就足够了,它会从DOM中删除它,并删除绑定事件以避免幻像。

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

是否有任何理由myview.remove();不满足你的需求吗?

希望它有所帮助。