我有一个带有ItemViews列表的CompositeView。当用户登录时以及用户退出时,将为两种状态呈现相同的集合。
ItemView看起来大致如下:
<div class="title">
{{ title }}
</div>
{{#if MA.currentUser }}
Add Review
{{/if}}
使用JavaScript:
MA.Views.Items.Movie = Backbone.Marionette.ItemView.extend({ template: 'items/movie', className: 'movie' });
但是,这似乎没有显示预期的“添加评论”。
在这种情况下可以做些什么?
答案 0 :(得分:0)
我的理解是模板只能访问传递给它的数据。默认情况下,这是由ItemView继承的View类中的serializeData
序列化的模型。您可以使用templateHelpers或编写自定义serializeData来添加其他数据(也可能是其他方式)。
ItemView
中的模板助手可能是:
templateHelpers: {
MA: function(){
return MA; //Unknown if having the same function name as the global will effect it
}
}
在项目视图中。见marionette docs template helper
模板助手可以是函数,对象文字或对象。
对于serializeData,您只需覆盖ItemView类中的serializeData
方法。
serializeData: function(){
return {
"some attribute": "some value"
}
值得注意的是,这也需要您序列化您的模型。 marionette docs serializeData
templateHelpers
可能是最简单的答案,也可能是他们的目标。