如何在MarionetteJS ItemView中显示其他信息,具体取决于用户是否已登录?

时间:2013-04-21 21:14:50

标签: backbone.js marionette

我有一个带有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'
});

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

在这种情况下可以做些什么?

1 个答案:

答案 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

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

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

值得注意的是,这也需要您序列化您的模型。 marionette docs serializeData

结论

templateHelpers可能是最简单的答案,也可能是他们的目标。