2016-08-09 42 views
0

Reproduzierbar über au new (Aurelia CLI), Code unten. Es funktionierte perfekt vor dem Update auf 1.0.Aurelia Ereignis Sprudeln Problem (?), Verhalten anders als 1.0

Das Problem: Beim Drücken der Schaltfläche "Schließen" wird closePopup() aufgerufen, aber unmittelbar danach openPopup(). Das Ergebnis ist, dass das Popup nicht geschlossen wird. Selbst click.trigger, die das Ereignis nicht aufblähen sollte, löst das Problem nicht.

Wie löst man das? Warum hat sich dieses Verhalten geändert?

app.html

<template> 
    <div click.delegate="openPopup()" style="border: 1px solid black; width: 100px; height: 100px"> 
     <div show.bind="_expanded"> 
      Foo <button click.trigger="closePopup()">Close</button> 
     </div> 
    </div> 
</template> 

app.ts

export class App { 
    _expanded; 

    openPopup() { 
     this._expanded = true; 
     console.log("Opened"); 
    } 

    closePopup() { 
    this._expanded = false; 
    console.log("Closed"); 
    } 
} 
+0

'click.trigger = "closePopup ($ event)">' und 'Event.preventDefault()' nicht so gut helfen. – timmkrause

+0

haben Sie versucht, True von Ihrem Event-Handler zurückzugeben? –

+0

Ja, nichts ist passiert. – timmkrause

Antwort

1

Solution (event.stopPropagation()):

app.html

<template> 
    <div click.delegate="openPopup()" style="border: 1px solid black; width: 100px; height: 100px"> 
     <div show.bind="_expanded"> 
      Foo <button click.trigger="closePopup($event)">Close</button> 
     </div> 
    </div> 
</template> 

app.ts

// ... 

    closePopup(event) { 
    event.stopPropagation(); 
    this._expanded = false; 
    console.log("Closed"); 
    } 

// ...