【问题标题】:Choose between two templates render with Marionette在使用 Marionette 渲染的两个模板之间进行选择
【发布时间】:2017-10-21 09:36:30
【问题描述】:

我在我的 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]

【问题讨论】:

    标签: javascript ruby-on-rails backbone.js coffeescript marionette


    【解决方案1】:

    您可以在 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];
        }
    }
    

    【讨论】:

      【解决方案2】:
      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"] 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-23
        • 2011-04-27
        • 2016-12-08
        • 1970-01-01
        • 2011-06-30
        • 2011-12-10
        相关资源
        最近更新 更多