2014-05-23 5 views
7

In einer Antwort auf eine similar question, die mehr als ein Jahr alt ist, las ich über eine einfache Möglichkeit, eine Schaltfläche mit Datenbindung in Dart (und Polymer-Dart) zu deaktivieren.Wie deaktiviere ich eine Schaltfläche mit Datenbindungen in Dart?

Meine aktuellen Code sieht wie folgt aus:

html:

... 
<button id="btnPointDown" on-click="{{decrement}}" disabled="{{points == 0}}">\/</button> 
... 

.dart:

... 
@published int points = 0; 

void increment() { 
    points++; 
} 

void decrement() { 
    points--; 
} 
... 

jedoch Dart scheint nicht 'klug zu sein' über das deaktivierte Element mehr.

Wie verwende ich aktuelle Dart und Polymer, um eine Schaltfläche mit Datenbindungen zu deaktivieren (oder wenn nicht programmgesteuert möglich)?

Antwort

18

das behinderten Attribut Bindung kann wie folgt erfolgen:

<button ... disabled?="{{ points == 0 }}">Content</button> 

Diese ? wird spezielle Syntax von Polymer eingeführt, um diese Art von Booleschen Attributen zu unterstützen Bindung.

funktioniert das nicht:

<button ... disabled="{{ points == 0 }}">Content</button> 

Weil es in

<button ... disabled="false">Content</button> 

, die noch auf die Schaltfläche würde deaktivieren führen würde.

Für Polymer> = 1,0 die neue Syntax zu verwenden ist:

<button ... disabled$="{{value}}">Content</button> 

Hinweis: value hat bereits eine boolean sein, wie Marco unten aufgezeigt. Andernfalls müssen Sie eine Funktion erstellen, die points == 0 zurückgibt. Siehe Data Binding Documentation hier und Migration Guide hier als Referenz.

Grüße, Robert

+0

Danke für die Antwort! Ist das irgendwo in den Polymer Docs dokumentiert? – snowdragon

+0

Ja, es ist: https://www.polymer-project.org/docs/polymer/binding-types.html#conditional-attributes – Robert

+0

leider scheint dies nicht für 1.0 mehr zu funktionieren –

6

für polymer 1.0 ich here die Antwort gefunden.

es sein sollte: <button ... disabled$="{{myTestFunction()}}">Content</button>

FYI: Ich nicht der Lage gewesen, verwenden, um einfache Aussagen wie points == 0 haben, aber stattdessen hatte ich eine Funktion zu verwenden, die eine boolean zurückgibt.

+0

Binding Ausdrücke sind in 1 sehr begrenzt .x. Es werden nur Eigenschaftsnamen, Nicht-Operator-'!' Und Funktionsaufrufe unterstützt. –

Verwandte Themen