Backbone/Marionette ItemView策略

Ste*_*ven 2 collectionview backbone.js marionette

我正在建立一个网站,其博客有一些特点.这是一种tumblr式的体验,其中有不同的后期类型:

  • Facebook的员额
  • 引用
  • 文章
  • 研究

这些职位都有一些共同的属性,如id,title,post_date,post_url_slug,但一些有一个post_imagepost_external_link为例.这是所有依赖的post_type,能容纳值,例如facebook,quote,article等这将是一个很好的策略,以确定哪种类型的它渲染时Marionette.CollectionView,要么干脆选择不同tempalte或在下划线的任意JavaScript处理这个模板我的模板?任何输入将不胜感激.

谢谢!

Der*_*ley 6

绝对不要将逻辑放在视图模板中.这将导致痛苦,痛苦,仇恨和黑暗的一面.:P

您可以getItemView在CollectionView或CompositeView上覆盖该方法,并使用它来确定所需的视图类型.https://github.com/marionettejs/backbone.marionette/blob/master/src/marionette.collectionview.js#L122


var Stuff = Marionette.CollectionView.extend({
  // ...,

  getItemView: function(item){
    var type = item.get("whatever_field");
    var viewType;
    if (type === "some value"){
      viewType = SomeViewType;
    } else {
      viewType = AnotherViewType;
    }
    return viewType;
  }
});
Run Code Online (Sandbox Code Playgroud)