0

我有一个带有 ItemView 列表的 CompositeView。当用户登录和用户注销时,会为两种状态呈现相同的集合。

ItemView 大致如下:

<div class="title">  
  {{ title }} 
</div>
{{#if MA.currentUser }}
  Add Review
{{/if}}

使用 JavaScript:

MA.Views.Items.Movie = Backbone.Marionette.ItemView.extend({
  模板:'项目/电影',
  类名:'电影'
});

但是,这似乎没有显示预期的“添加评论”。

有什么建议可以在这种情况下做什么?

4

1 回答 1

0

我的理解是模板只能访问传递给它的数据。默认情况下,这是在serializeDataItemView 继承的 View Class 中序列化的模型。您可以通过使用 templateHelpers 或编写自定义 serializeData(也可能是其他方式)来添加其他数据。

模板助手

a 中的模板助手ItemView可能像:

templateHelpers: {
  MA: function(){
    return MA; //Unknown if having the same function name as the global will effect it
  }
}

在您的项目视图中。查看marionette docs 模板助手

模板助手可以是函数、对象字面量或对象。

序列化数据

对于 serializeData,您只需覆盖serializeDataItemView 类中的方法。

serializeData: function(){
return {
  "some attribute": "some value"
}

值得注意的是,这也需要您对模型进行序列化。木偶文档 serializeData

结论

templateHelpers结果可能是最简单的答案,并且可能是它们的目的。

于 2013-04-26T06:52:49.787 回答