使用Marionette.js访问Eco模板中的实例方法

时间:2013-09-24 22:56:13

标签: javascript templates marionette backbone-views eco

我有简单的控制器

@Blobber.module "PlacesApp.Show", (Show, App, Backbone, Marionette, $, _) ->

  Show.Controller =

    showPlace: (place) ->
      showView = @getShowView place

      App.mainRegion.show showView

    getShowView: (place) ->
      new Show.Place
        model: place

并查看文件:

@Blobber.module "PlacesApp.Show", (Show, App, Backbone, Marionette, $, _) ->

  class Show.Place extends App.Views.ItemView
    template: "places/show/templates/_place"

我想访问名为place的{​​{1}}模型实例上的方法,该方法通过Supermodel.js返回模型place.posts()的关联Collection({{ 3}})。我正在使用Eco模板(http://pathable.github.io/supermodel/)并且一直在关注https://github.com/sstephenson/eco教程中的模式。

任何人都知道如何访问我的Eco模板中的关联Post?我希望能够访问实际方法posts,但我愿意在我的视图中创建一个.posts()变量并将其传递到模板中。

谢谢,如果您需要更多信息,请询问。

2 个答案:

答案 0 :(得分:1)

我通常用以下两种方式做这件事:

  1. serializeData()视图中覆盖Show.Place,在结果json中包含posts()数据,然后按@posts访问模板中的帖子数据。

    < / LI>
  2. 在视图中覆盖templateHelpers(),并按@posts()访问模板中的帖子数据。

  3. 查看https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.view.md了解详情。

答案 1 :(得分:0)

您可以使用Marionette的 CompositeView 从模板中提取逻辑,它可以处理模型和集合:

因此,您将拥有 CompositeView 的模板,没有循环逻辑,在此视图中,您必须定义 itemView itemViewContainer 将包含绑定到您的集合中的模型的 itemView 的出现次数。之后,您必须使用自己的模板为 CompositeView 创建 ItemView

我相信您会在文档中找到所需的所有信息并提供更好的解释;)

Marionette.CompositeView