2015-02-25 2 views
5

Я хочу попробовать использовать:Как установить itemController в каждом из них (ember 1.11 beta3)?

{{#each content as |product index|}} 
    {{index}} 
{{/each}} 

Но мое приложение имеет itemContoller, например:

{{#each product in content itemController='product'}} 

Если установить это:

{{#each content as |product index| itemController='product'}} 

Это не работает! Я нашел всех укрывателей и не нашел ответа.

Любая помощь пожалуйста.

ответ

7

Контроллеры (Object, Array и itemController) уходят. Новый способ сделать это - использовать компонент.

Таким образом, вместо того, чтобы ваш контроллер элемента, вы должны определить компонент:

App.MyProductComponent = Ember.Component.extend({ 
    myIndex: function(){ 
    return this.get('passedIndex') + 1; 
    }.property('passedIndex') 
}); 

Затем внутри вашего #each помощника вы будете использовать его следующим образом:

<script type="text/x-handlebars" data-template-name="index"> 
    <ul> 
    {{#each model as |product index|}} 
     {{ my-product passedIndex=index product=product }} 
    {{/each}} 
    </ul> 
</script> 

Рабочий раствор here

См. Следующую ссылку и выполните поиск itemController - https://github.com/emberjs/rfcs/pull/15

+0

Прохладный. Большое спасибо – JeskTop

+1

Не забудьте установить 'tagName: 'li'' в компоненте. В противном случае будет использован div, который может испортить ваш список. –

0

Действительно? Я имею в виду, что есть много случаев, когда я думаю, что создание компонента для отображения вычисленных значений на основе свойств (ов) модели контроллера будет излишним ..... Что, если я просто хочу строку (я не требуется <div> вещь, добавленная ember для каждого компонента).

Создание хелпера (ов) тогда? Вау.

0

@ user3443096,

Если вы не хотели бы иметь Div теги, вставленные с помощью Ember tagName: "" свойство как это:

App.InvoiceItemsComponent = Ember.Component.extend({ 
tagName: '' 
}); 

Теперь дивы вокруг компонента не будет вставлен.

Смежные вопросы