木偶`close()`或`empty()`

3gw*_*ain 2 backbone.js backbone-views marionette

在我的应用程序中,我正在添加content区域和视图header,footer.在我添加视图之前,我试图找到是否存在控制器.如果是这样我试图关闭这些区域之前我添加另一个像这样:

if(socialApp.Controller) {
 socialApp.Controller.layout.header.close();
 socialApp.Controller.layout.content.close();
 socialApp.Controller.layout.footer.close();
}
Run Code Online (Sandbox Code Playgroud)

但我收到了错误.

而不是关闭我使用的empty()方法是正常的.

if(socialApp.Controller) {
     socialApp.Controller.layout.header.empty();
     socialApp.Controller.layout.content.empty();
     socialApp.Controller.layout.footer.empty();
    }
Run Code Online (Sandbox Code Playgroud)

我做的是对的吗?有谁确认我好吗?注意:我是否还需要close控制器/视图..!?我在用Backbone.Marionette v2.1.0.提前致谢.

eme*_*mem 6

来自Marionette v2.1.0地区文档

如果通过调用show将当前视图替换为新视图,默认情况下它将自动销毁先前的视图.

来自LayoutView

在第一次渲染之后,所有后续渲染将通过调用它们上的空方法来强制清空每个区域.这将强制区域中的每个视图以及子视图(如果有的话)也被销毁.

因此,我认为你不需要empty()手动将其

  • 一般来说我会说是的.[这里](https://github.com/marionettejs/backbone.marionette/issues/583)是关于这个主题的好文章. (2认同)