2016-08-15 3 views
0

Betrachten Sie das folgende:Ember 2 Aktionen innerhalb jeder Schleife

days_week: [ 
    { 
     selected '', 
     day: 'mon' 
    }, 
    { 
     selected '', 
     day: 'wed' 
    }, 
    { 
     selected '', 
     day: 'fri' 
    } 
] 

Innerhalb meiner Vorlage, kann ich die Tage Schleife durch:

{{#each days_week as |day_week index|}} 
    {{day_week.day}} 
{{/each}} 

Welche dies erzeugt: mon wed fri

Was ich jetzt tun möchte, ist eine Aktion zuweisen, so dass beim Klicken es wird eine Klasse hinzufügen, und wieder auf klicken, wird es die Klasse entfernen ....

{{#each days_week as |day_week index|}} 
    <button class="{{day_week.selected}}" {{action 'toggle' day_week}}> 
     {{day_week.day}} 
    </button> 
{{/each}} 

jedoch der folgende Code scheint nicht (durch Hinzufügen der Klasse Highlight beginnen) zu arbeiten?

actions: { 
    toggle: function(day_week){ 
     day_week.set('selected','highlight'); 
    } 
} 

und ich bekomme diese Fehlermeldung: Typeerror: day_week.set ist keine Funktion?

+0

Tippfehler Fehler in Ihrer Frage, ausgewählte Eigenschaft fehlt Semikolon. – kumkanillam

+0

Warum sollten Sie sich vorstellen, dass für ein einfaches altes JS-Objekt eine 'set'-Methode definiert ist? –

Antwort

2

Verwenden Sie Ember.set. Es funktioniert auf jedem Objekt.

Bitte überprüfen this out

+0

Vielen Dank für die Lieferung einer Lösung. Ich habe verschiedene Formen von this.set() ausprobiert und gelernt, wie man 3 Elemente übergeben kann: Ember.set (day_week, 'selected', 'highlight'); Danke noch einmal! – Matt

Verwandte Themen