2015-09-22 6 views
7

Ich habe ein 10x10 Array, das 10 Zeilen mit je 10 Zellen darstellt. Ich möchte ein Raster zeichnen und zu jeder Zelle Hintergrund-Farbe entsprechend dem Wert im Array:Wie bekomme ich den @index von verschachtelten #Each in Meteor

ein 0 Wert wird weiß sein und ein 1-Wert schwarz sein

ich diese CSS eingerichtet haben :

.cell{ 
    height: 20px; 
    width: 20px; 
    float: left; 
    margin: 0; 
    padding: 0; 
} 

.cell.live{ 
    background-color: black; 
} 

.cell.dead { 
    background-color: white; 
} 

habe ich einen Helfer, der 'live' oder 'tot' entsprechend dem Wert in der Anordnung nach 2 Argumente zurück: x und y

hier ist der Code:

Template.grid.helpers({ 
    cellState: function(x, y) { 
     if(screenArray[x][y] === 1){ 
     return 'live'; 
     } 
     else { 
     return 'dead'; 
     } 
    } 
    }); 

mein Problem ist, dass ich weiß nicht, wie die @index meiner beiden #each

Schleifen hier ist meine Vorlage zu bekommen, ich keine Lösung für das finden konnte ?????

<template name="grid"> 
    <div class="gridWrapper"> 
    {{#each row in rows}} 
    <div class="row"> 
     {{#each cell in row}} 
     <div class="cell {{cellState @index ?????}}">{{this}}</div> 
     {{/each}} 
    </div> 
    {{/each}} 
</div> 
</template> 
+0

nur ein Vorschlag: mit ../you Zugang zu dem übergeordneten Kontext bekommen, so dass ich versuchen würde, ../ Reihe @index – MrE

+0

@MrE - ich konnte nicht herausfinden, wie man Ihren Vorschlag verwendet. sollte es ../@index sein? Wenn ja, hat es für mich nicht geklappt. Keiths Antwort löste das Problem. Aktualisierung des Haupttextes –

Antwort

14

Sie müssen let verwenden, um den Index zu erfassen, wie:

{{#let rowIn[email protected]}} 
    {{#each cell in row}} 
     <div class="cell {{cellState @index rowIndex}}">{{this}}</div> 
    {{/each}} 
{{/let}} 
+0

nur mit Meteor 1,2 –

+0

@keith Nicholas, das ist genau das, was ich gesucht habe. Problem gelöst. –

+0

akzeptiere die Antwort dann :) –

Verwandte Themen