2013-03-29 2 views
1

я в настоящее время рендеринга списка просмотров:Рендер несколько пар Просмотр/Controller

<ul> 
    {{#each newsItem in controller}} 
     {{view App.NewsItemView contentBinding="newsItem" class="news-item" }} 
    {{/each}} 
    </ul> 

Но я хотел бы придать NewsItemController в каждом представлении.

Я попытался с помощью render, но это, кажется, только для поддержки единого представления, давая исключение:

Uncaught Error: Handlebars error: Could not find property 'control' on object .

Я нашел краткое упоминание использования control вместо этого, но это уже не кажется быть включенным.

Как я могу визуализировать несколько версий одного и того же представления, вставляя отдельный контроллер в каждый из них?

ответ

1

{{render}} должен быть установлен в текущем ведущем устройстве (если вы его построите из Github). Вы должны быть в состоянии использовать его несколько раз, если вы передаете модель:

<ul> 
{{#each controller}} 
    {{render "newsItem" this}} 
{{/each}} 
</ul> 

{{control}} все еще там, но скрывается за флагом (потому что это все еще экспериментальная). Чтобы использовать его, вам необходимо сделать: ENV.EXPERIMENTAL_CONTROL_HELPER = true перед включением файла ember.js. Если вы можете избежать его использования, было бы лучше.

Однако я думаю, что самый простой подход будет использовать itemController:

<ul> 
    {{#each controller itemController="newsItem"}} 
    {{view App.NewsItemView class="news-item" }} 
    {{/each}} 
</ul> 

Я думаю, вы можете объединить их, чтобы сделать его проще (я не пробовал еще):

<ul> 
    {{each controller itemController="newsItem" itemViewClass="App.NewsItemView"}} 
</ul>