MarionetteJS:应用程序区域与布局

Abe*_*Abe 7 backbone.js backbone-views marionette

我正在阅读最新版本(2.3.0)的文档,它说应用程序区域现已弃用.

应用领域

警告:不建议使用此功能已弃用.您应该使用布局视图,而不是将应用程序用作视图树的根.要将布局视图范围限定为整个文档,可以将其el设置为"body".这可能类似于以下内容:var RootView = Marionette.LayoutView.extend({el:'body'});

在大多数教程中,包括David Sulc的书Backbone Marionette:A Gentle Introduction,它使用以下代码片段向应用程序添加区域.

而不是下面使用addRegions的示例,我应该做什么呢?

var ContactManager = new Marionette.Application({});
ContactManager.addRegions({
    mainRegion: "#main-region"
});

var ContactView = Marionette.ItemView.extend({
    template: "#whatever",
    ui: {
        button: ".button".
    },
    events: {
        "click @ui.button": "click",
    },
    click: function () {
        console.log("do stuff here...");
    }
});

ContactManager.on("start", function () {
    var contactView = new ContactView({
        model: someModel
    });
    ContactManager.mainRegion.show(contactView);
});
Run Code Online (Sandbox Code Playgroud)

Tra*_*ace 7

请改用layoutview.

你可以这样做:

var ContactManager = new Marionette.Application({});
var LayoutView = Backbone.Marionette.LayoutView.extend({
  template: "#layout-view-template",

  regions: {
    menu: "#menu",
    content: "#content"
  }
});

ContactManager.layout_view = new LayoutView(); 
ContactManager.layout_view.render(); 
Run Code Online (Sandbox Code Playgroud)

我从来没有直接向我的app对象添加区域.

  • @Abe您需要在布局上定义el属性,然后再渲染它. (2认同)