2014-05-23 23 views
7

W odpowiedzi na similar question, czyli ponad rok, przeczytałem o łatwym sposobie wyłączania przycisku przy użyciu wiązania danych w Dart (i dart polimerowy).Jak wyłączyć przycisk za pomocą powiązań danych w Dart?

Mój bieżący kod wygląda następująco:

html:

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

.dart:

... 
@published int points = 0; 

void increment() { 
    points++; 
} 

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

Dart jednak nie wydaje się 'być mądry' o niepełnosprawnym elemencie.

Jak korzystać z aktualnych technologii Dart i Polymer w celu wyłączenia przycisku przy użyciu powiązań danych (lub jeśli nie jest to możliwe programowo)?

Odpowiedz

18

Oprawa do atrybutu niepełnosprawnej można zrobić tak:

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

Ten ? jest specjalna składnia wprowadzony przez Polymer wspierać wiązanie tego rodzaju atrybutów logicznych.

To nie działa:

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

Bo to spowodować

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

który nadal będzie wyłączyć przycisk.

Dla Polymer> = 1,0 nowej składni do wykorzystania jest:

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

Uwaga: value ma już być logiczna jak Marco wskazał poniżej. W przeciwnym razie musisz utworzyć funkcję, która zwróci points == 0. Zobacz tutaj Data Binding Documentation tutaj i Migration Guide tutaj w celach informacyjnych.

Pozdrawiam, Robert

+0

Dzięki za odpowiedź! Czy jest to udokumentowane w Dokumentach Polymer gdzieś? – snowdragon

+0

Tak, to jest: https://www.polymer-project.org/docs/polymer/binding-types.html#conditional-attributes – Robert

+0

Niestety to nie działa już 1.0. –

6

dla polymer 1.0 Znalazłem odpowiedź here.

Powinno być: <button ... disabled$="{{myTestFunction()}}">Content</button>

FYI: Mam nie był w stanie używać prostych stwierdzeń jak points == 0, lecz musiałem użyć funkcji, która zwraca boolean.

+0

Wiążące wyrażenia są bardzo ograniczone w 1 .x. Obsługiwane są tylko nazwy właściwości, nie operator '!' I wywołania funkcji. –