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

时间:2014-09-27 10:25:13

标签: backbone.js marionette backbone-views

在我的应用中,我正在向content地区和header,footer添加观看次数。在我添加视图之前,我试图找到是否存在控制器。如果是这样,我试图关闭这些区域,然后再添加另一个区域:

if(socialApp.Controller) {
 socialApp.Controller.layout.header.close();
 socialApp.Controller.layout.content.close();
 socialApp.Controller.layout.footer.close();
}

但我收到了错误。

而不是关闭我使用empty()方法可以正常工作。

if(socialApp.Controller) {
     socialApp.Controller.layout.header.empty();
     socialApp.Controller.layout.content.empty();
     socialApp.Controller.layout.footer.empty();
    }

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

2 个答案:

答案 0 :(得分:6)

来自Marionette v2.1.0 Region docs

  

如果通过调用show将当前视图替换为新视图,默认情况下它会自动销毁上一个视图。

来自LayoutView

  

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

因此,我认为您不需要empty()手动

答案 1 :(得分:-1)

define(["app"], function (app) {
    return {
        clearRegions: function () {
            app.topRegion.reset();
            app.bottomRegion.reset();
            app.wrapRegion.reset();
        }
    }
});

controller.js

index = function () {
        helpers.clearRegions();
}