2014-05-23 9 views
7

In una risposta a un similar question, che ha più di un anno, ho letto su un modo semplice per disabilitare un pulsante utilizzando l'associazione dati in Dart (e dardo polimerico).Come disabilitare un pulsante utilizzando i collegamenti dati in Dart?

mio codice attuale è simile al seguente:

html:

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

.dart:

... 
@published int points = 0; 

void increment() { 
    points++; 
} 

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

Tuttavia Dart non sembra 'essere intelligente' sull'elemento disabilitato più.

Come utilizzare Dart e Polymer aggiornati per disabilitare un pulsante utilizzando i binding di dati (o se non possibile a livello di programmazione)?

risposta

18

Il legame con l'attributo disabled può essere fatto in questo modo:

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

Questo ? è sintassi speciale introdotta da Polymer per sostenere vincolante a questo tipo di attributi booleani.

Questo non funziona:

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

Perché comporterebbe

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

che sarebbe comunque disabilitare il pulsante.

Per Polimero> = 1.0 la nuova sintassi da usare è:

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

Nota: value deve già essere un valore booleano come Marco ha sottolineato di seguito. Altrimenti devi creare una funzione che restituisca points == 0. Vedi Data Binding Documentation qui e Migration Guide qui per riferimento.

saluti, Robert

+0

Grazie per la risposta! Questo è documentato in Polymer Docs da qualche parte? – snowdragon

+0

Sì, è: https://www.polymer-project.org/docs/polymer/binding-types.html#conditional-attributes – Robert

+0

sfortunatamente questo non sembra funzionare per 1.0 più –

6

per polymer 1.0 ho trovato la risposta here.

dovrebbe essere: <button ... disabled$="{{myTestFunction()}}">Content</button>

FYI: ho non stato in grado di utilizzare le istruzioni semplici come points == 0, ma invece ho dovuto usare una funzione, che restituisce un boolean.

+0

Le espressioni obbligatorie sono molto limitate in 1 .X. Sono supportati solo i nomi di proprietà, non l'operatore '!' E le chiamate di funzione. –

Problemi correlati