2013-08-05 13 views
7

Tworzę slajd - więc jest 3 zdjęć każdy div podobnie jakkażdy z indeksem a modulo w węgielek i kierownicy

<div> 
    <img /> 
    <img /> 
    <img /> 
</div> 

</div> 
    <img /> 
    <img /> 
    <img /> 
</div> 

Brak kodu wokół internet działa bez zarzutu -

https://github.com/johanpoirier/resthub-backbone-stack/commit/8a318477d56c370d2a0af4da6eae9999c7bb29da

http://jaketrent.com/post/every-nth-item-in-handlebars-loop/

http://rockycode.com/blog/handlebars-loop-index/

http://www.arlocarreon.com/blog/javascript/handlebars-js-everyother-helper/

i tak, w tym odpowiedzi tutaj w przepełnieniu stosu.

Czy ktoś może podać kod, który działa idealnie w bieżącym okresie (wersja Ember/Handlebar)?

Mam tablicę modeli więc chciałbym zrobić coś takiego

{{#each model}} 
    {{if index % 3 == 0}} 
    {{/if}} 
{{/each}} 
+0

Czy spojrzał na http : //stackoverflow.com/questions/8853396/logical-operator-in-a-handlebars-js-if-c-itional-/9405113#9405113 jest całkiem sporo przykładów na tworzenie pomocników warunków niestandardowych. Również * indeks * jest dostępny poprzez '@ index' – colymba

Odpowiedz

13

I zostały stwierdzającej index lub @index nie działają od wewnątrz szablonu, ale można do niego dostęp z obrębu pomocnik.

Zrobiłem tu przykład pokazuje, że w ten sposób:

http://jsbin.com/egoyay/1/edit

Edit: Dodawanie kodu odpowiedzieć, wykazując {{else}} bloku

Kierownice pomocnika (dla non-Ember używać):

Handlebars.registerHelper('ifIsNthItem', function(options) { 
    var index = options.data.index + 1, 
     nth = options.hash.nth; 

    if (index % nth === 0) 
    return options.fn(this); 
    else 
    return options.inverse(this); 
}); 

Zastosowanie:

<ol> 
{{#each model}} 
    <li> 
    {{#ifIsNthItem nth=3}} 
     Index is a multiple of 3 
    {{else}} 
     Index is NOT a multiple of 3 
    {{/ifIsNthItem}} 
    </li> 
{{/each}} 
</ol> 
+0

Wow twoje rzeczy działają bezbłędnie. Dziękuję bardzo! – David

+1

Nice. Zauważyłem, że 'options.data.view.contentIndex' nie był dostępny, ale dostęp do indeksu przez' options.data.index' zadziałał. – kontur

+0

To działało świetnie. Jak zrobiłbyś to samo, ale z możliwością dodania czegoś do miksu? '{{ifIsNthItem nth = 3}} rób to {{else}} rób coś innego {{/ ifIsNthItem}}' – carter

2

Jeśli podasz itemViewClass w each pomocnika, a następnie będzie utworzyć widok dla każdego elementu i ustaw właściwość ContentIndex:

{{#each model itemViewClass="Ember.View"}} 
    {{view.contentIndex}} 
{{/each}} 

przetestowany w Ember v1.1.0

+1

Bez określenia itemViewClass, możemy użyć _view.contentIndex. Ale to nie działa wewnątrz #if pomocnika w #each. – Champ