2015-02-25 12 views
5

voglio provare uso:Come impostare itemController in ciascuno come (ember 1.11 beta3)?

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

Ma la mia app ha l'itemContoller, in questo modo:

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

Se ho impostato questo:

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

Non funziona! Ho trovato tutte le guide di brace e non ho trovato la risposta.

Qualsiasi aiuto per favore.

risposta

7

I controller (Object, Array e itemController) stanno andando via. Il nuovo modo di fare le cose è usando un componente.

Così, invece di vostro controller oggetto, si potrebbe definire un componente:

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

Poi, all'interno del vostro #each aiutante si usa come segue:

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

Soluzione di lavoro here

Vedere il seguente link e fare una ricerca per itemController - https://github.com/emberjs/rfcs/pull/15

+0

Freddo. Grazie mille – JeskTop

+1

Non dimenticare di impostare 'tagName: 'li'' nel componente. In caso contrario, verrà utilizzato un div, che potrebbe rovinare la tua lista. –

0

Davvero? Voglio dire, ci sono molti casi in cui penso che la creazione di un componente per la visualizzazione di valori calcolati in base alle proprietà del modello del controller sarebbe eccessivo ... E se volessi una stringa (Non lo faccio serve la cosa <div> aggiunta da terra per ciascun componente).

Creazione di helper (s), quindi? Wow.

0

@ user3443096,

Se non si desidera avere i tag div inseriti da un uso brace tagName: "" proprietà come questa:

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

Ora, non saranno inseriti div intorno alla vostra componente.