7 Stimmen

Jedes mit Index und Modulo in Ember und Handlebar

Ich erstelle eine Diaschau - also gibt es 3 Bilder in jedem div wie folgt

Kein Code im Internet funktioniert einwandfrei -

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/

und ja, auch die Antworten hier bei Stack Overflow.

Kann jemanden bitte etwas Code zur Verfügung stellen, der in dieser aktuellen Zeit (Version von Ember/Handlebar) perfekt funktioniert?

Ich habe ein Array von Modellen, also würde ich gerne etwas wie

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

16voto

Kieran Hayes Punkte 203

Ich habe festgestellt, dass index oder @index innerhalb der Vorlage nicht funktionieren, aber Sie können darauf von einem Helfer aus zugreifen.

Ich habe hier ein Beispiel gemacht, das dies demonstriert:

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

Bearbeiten: Hinzufügen von Code zur Antwort, der {{else}} Block demonstriert

Handlebars-Helfer (für nicht-Ember-Verwendung):

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);
});

Verwendung:

 {{#each model}}

     {{#ifIsNthItem nth=3}}
        Index ist ein Vielfaches von 3
     {{else}}
        Index ist KEIN Vielfaches von 3
     {{/ifIsNthItem}}

 {{/each}}

2voto

ladoch Punkte 106

Wenn Sie itemViewClass im each-Helper angeben, wird eine Ansicht für jedes Element erstellt und die contentIndex-Eigenschaft festgelegt:

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

getestet in Ember v1.1.0

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X