在使用 Marionette 呈现的两个模板之间进行选择

Choose between two templates render with Marionette

我在 Rails 应用程序上使用 Marionette (Backbone.js)。

我想做的是在匹配 id 的情况下加载另一个模板,这就是我所拥有的

join_room.html.slim 文件

...
MyAppManager.start({
      tmpltRoute: templateRoute
});
...

menu_view.js.coffee

@MyAppManager.module "Layout", (Layout, MyAppManager, Backbone, Marionette, $, _) ->
  Layout.MenuView = Marionette.ItemView.extend
    initialize: (options)->
      @isPremium = options.isPremium
      @isStandard = options.isStandard
      @tmpltRoute = options.tmpltRoute
    template: JST[this.tmpltRoute]

您可以覆盖 ItemView 上的 getTemplate 以实现此目的(参见文档)

https://marionettejs.com/docs/v2.4.0/marionette.view.html#change-which-template-is-rendered-for-a-view

getTemplate: function(){
    if (this.model.get("foo")){
      return JST[foo];
    } else {
      return JST[bar];
    }
}
Layout.MenuView = Marionette.ItemView.extend 
    template: JST["marionette/app/templates/layout-menu"] 
    getTemplate: -> 
      if this.isCase
        return JST["marionette/app/templates/layout-menu-case"] 
      else 
        return JST["marionette/app/templates/layout-menu"]