Übergeben Sie einen Verweis des angeklickten DOM-Elements an den Aktionshandler in Ember

7

Ich habe eine Reihe von Schaltflächen, deren Status ich mit einer Klasse active umschalten möchte. Wenn ich eine einzelne Schaltfläche hätte, würde ich die Klasse active an eine Controller-Eigenschaft binden und diese Eigenschaft im Click-Handler umschalten:

%Vor%

Aber ich habe mehrere Knöpfe, also bin ich mir nicht sicher, was ich binden kann. Es wäre nützlich, wenn ich einen Verweis auf die angeklickte Schaltfläche an den Action-Handler übergeben könnte, aber ich bin nicht sicher, wie das geht.

%Vor%

Was ist der beste Weg, dies zu erreichen?

    
Sean Mackesey 07.04.2015, 05:35
quelle

4 Antworten

4

Ist das Model-Item nicht das, was du weitergeben willst und nicht der Button?

Dann können Sie mit Ihrem Toggle einfach ein Attribut für das Objekt festlegen, an das Sie binden Schaltflächenklasse .

%Vor%     
Mårten 07.04.2015, 09:33
quelle
11

Obwohl das Poster die Antwort hatte, die er wollte, dachte ich, ich würde eine Antwort auf das schreiben, was ich für die ursprüngliche Frage hielt:

Wie bekomme ich eine Referenz auf das angeklickte DOM-Element von einer Aktion? seit ich hierher gekommen bin, um nach einer Antwort auf diese Frage zu suchen, und sie nicht gefunden habe.

Ich finde keine Möglichkeit, das tatsächliche Element zu erhalten, aber Sie können das root-Ansichtselement (das die in der Vorlage definierten Elemente umschließt) über this :

abrufen

Vorlage:

<button {{action 'toggle' this}}>model.title</button>

Controller, Ansicht, Komponente:

%Vor%     
blisstdev 14.04.2015 01:02
quelle
10

Nur eine andere Antwort ...

Wenn Sie die Aktion in den onclick (oder ein anderes dom-Ereignis) setzen, erhalten Sie das javascript-Objekt "event" im letzten Parameter (damit Sie event.target zum Abrufen und Bearbeiten des Objekts verwenden können)

Vorlage:

%Vor%

Route oder Controller:

%Vor%

Ich hoffe, es hilft

    
dolcalmi 06.05.2016 06:55
quelle
0

Sie können active -Eigenschaft in items

einfügen %Vor%

wenn active=true dann active klasse auf die Schaltfläche angewendet wird.

%Vor%

Um den Fragetitel Pass a reference of the clicked DOM element to the action handler in Ember zu beantworten.

1.Wenn Sie eine Komponente verwenden, können Sie eine beliebige Liste von Ereignisnamen definieren in der Komponente und das ist entworfen, um natives event -Objekt zu erhalten. z.B., {{my-button model=model}}

%Vor%

2.Wenn Sie html-Tags wie button verwenden, müssen Sie einem Inline-Event-Handler eine (Closure-) Aktion zuweisen.

%Vor%

In Aktionen erhält hash toggle function immer das native Browser event object als letztes Argument.

%Vor%

In diesem <button {{action 'toggle' model}}>{{model.title}}</button> -Format erhält die Aktion toggle nicht event object,

Sehr gut erklärt in Ссылка

    
kumkanillam 28.04.2017 06:43
quelle

Tags und Links