在使用 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
以实现此目的(参见文档)
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"]
我在 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
以实现此目的(参见文档)
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"]