2013-09-24 1 views
1

У меня есть простой контроллерДоступ метода экземпляра в шаблонах Eco с использованием Marionette.js

@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 модели экземпляре под названием place.posts(), который возвращает ассоциированный Collection модели Post через Supermodel.js (http://pathable.github.io/supermodel/). Я использую шаблоны Eco (https://github.com/sstephenson/eco) и следил за шаблонами в учебниках по адресу http://www.backbonerails.com.

Кто-нибудь знает, как я должен обратиться к связанным posts в моем шаблоне Eco? Предпочтительно, я хотел бы иметь доступ к фактическому методу .posts(), но я бы согласился на создание переменной posts на моем представлении и передал ее в шаблон.

Спасибо, и если вам нужна дополнительная информация, пожалуйста, спросите.

ответ

1

я обычно делаю такую ​​вещь, в любом из этих двух способов:

  1. переопределения serializeData() в Show.Place зрении, включает posts() данных в результате JSON, то доступ к данным сообщений в шаблоне по @posts.

  2. переопределить templateHelpers() на вид и получить доступ к данным по записям в шаблоне @posts().

Проверьте, пожалуйста, https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.view.md.

+0

Насколько я могу судить, внутри 'метода templateHelpers', я до сих пор только, кажется, имеют доступ к атрибутам модели. Не могли бы вы показать пример кода для одного из этих решений? Я не знаю, как вообще получить доступ к модели в методе 'serializeData', и я знаю только, как получить доступ к атрибутам модели в методе' templateHelpers'. Спасибо за вашу помощь! – wuliwong

+0

Кроме того, я открыт для использования 'compositeView' или любого другого типа представления, которое было бы лучше для этого типа вещей. – wuliwong

0

Вы можете использовать CompositeView из марионеток, чтобы извлечь свою логику из шаблона, он может обрабатывать модели и коллекции:

Таким образом, вы будете иметь шаблон для CompositeView без логики петли, в этом представлении вы должны определить itemView и itemViewContainer, который будет содержать вхождения (-ы) itemView, привязанные к моделям из вашей коллекции. После этого вам нужно будет создать ItemView для вашего CompositeView со своим шаблоном.

Я уверен, что вы найдете всю необходимую вам информацию с более объяснениями в документации;)

Marionette.CompositeView