选择使用木偶

时间:2017-05-21 19:15:23

标签: javascript ruby-on-rails backbone.js coffeescript 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]

2 个答案:

答案 0 :(得分:1)

您可以覆盖getTemplate上的ItemView来实现此目标(请参阅文档)

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];
    }
}

答案 1 :(得分:0)

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"]