1

我有简单的控制器

@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模型实例上访问一个名为的方法,它通过 Supermodel.js ( http://pathable.github.io/supermodel/ )返回模型place.posts()的关联。我正在使用 Eco 模板 ( https://github.com/sstephenson/eco ),并且一直在遵循http://www.backbonerails.com上的教程中的模式。CollectionPost

任何人都知道我应该如何访问posts我的生态模板中的关联?最好我希望能够访问实际的方法.posts(),但我会满足于在我的视图中创建一个posts变量并将其传递到模板中。

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

4

2 回答 2

1

我通常通过以下两种方式中的任何一种来做这样的事情:

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

  2. 在视图中覆盖templateHelpers(),并通过 . 访问模板中的帖子数据@posts()

检查https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.view.md了解更多信息。

于 2013-09-25T16:04:46.540 回答
0

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

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

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

Marionette.CompositeView

于 2013-09-25T16:46:51.637 回答