2016-11-02 3 views
0

Wahrscheinlich ist es eine noobisch Frage. Momentan tüftele ich an Framer.js. Ich habe eine CoffeeScript-Frage.deklarieren dynamische Variable in Schleife Coffescript

Also ich habe ein Array und ich möchte eine dynamische Variable zu einer Objektinstanz deklarieren. Der obige Code erzeugt nur 5 li-Layer (was Framer-spezifisch ist> Ich möchte keine nicht selbsterklärenden Layernamen im Editor haben)

Also innerhalb der for-Schleife;

var item-orange = neue Ebene ...

var item-apple = neue Ebene ... und so weiter

Wie kann ich erreichen dies mit Coffeescript?

+0

Was „Editor“ meinen Sie das? Warum benutzt du dafür kein Objekt ('{orange: ..., apple: ...}')? –

+0

Was möchten Sie erreichen? Was bedeutet "y: li * 60", ist das nicht NaN? Warum weisen Sie die gesamten Array-Typen als Text zu? Was ist der Sinn dieser Druckanweisung? Können Sie Ihr Problem in Bezug auf die erwartete und tatsächliche Leistung erklären? – kba

+0

Wahrscheinlich hätte ich den Rest des Framer-Jaros ausziehen sollen. Grundsätzlich wird jeder Wert in Array zur übergeordneten Dropdown-Liste mit einem Abstand von 60 Pixeln vertikal hinzugefügt. Die Druckfunktion ist eine Möglichkeit, console.log in Framer Studio auszuführen. Ich habe ein bisschen gevögelt. Mit "# {i}" können Sie Werte von Elementen abrufen. Framer.js ist ein Prototyping-Framework mit einer IDE namens Framer Studio. – myradon

Antwort

0

Ich bin mir nicht sicher, aber ich denke, was Sie versuchen, ist ein Verweis auf jede erstellte Ebene mit Namen, oder? Sie können dies tun, indem sie in einem Objekt unter der Bezeichnung ihres Namens zu speichern:

types = ["orange", "apple", "banana", "grapefruit", "pear"] 

# Create an empty layers object, outside of the loop 
layers = {} 

# Loop over the types array, storing the type in the variable named type 
# And the number of the current loop in the variable index 
for type, index in types 
    li = new Layer 
     html: type 
     y: index * 220 
     name: "list-item-#{type}" 
    # Store the layer in the layer object under the type key 
    layers[type] = li 

    print "list-item-" + "#{type}", layers[type] 

# Get a specific layer out of the layers array 
layers['apple'].animate 
    x: 300 

Voll Beispiel ist hier: http://share.framerjs.com/5owxrbz5hqse/

+0

Handy so ein Beispiel. In Ihrem Beispiel sehen Sie in Framer Studio, dass jede Instanz li genannt wird. Ich möchte sie als Layer-Liste-Element-Orange, Layer-Liste-Element-Apfel und so weiter sehen. – myradon

+0

Sie können dies tun, indem Sie den Layer explizit mit der 'name:' ​​Eigenschaft benennen, ich habe das Beispiel aktualisiert, um dies einzuschließen. – Niels

+0

Niels Vielen Dank! – myradon