2013-10-03 22 views
5

bağlayıcı zaman olay düzgün değil ateş bu html kodunu var Bu durumdaon-değişim değeri

import "dart:html"; 
import 'package:polymer/polymer.dart'; 

@CustomTag('dictionary-converter') 
class DictionaryConverter extends PolymerElement with ObservableMixin { 

    @observable String text = "Initial text"; 

    void change(Event event, var detail, TextAreaElement textElement) { 
    print(textElement.value); 
    print(text); 
    } 

} 

, on-change olay sadece tetiklenir zamandan zamana. (Tam olarak ne zaman anlayamadım).

value={{text}} bağını kaldırdığımda, metin her değiştiğinde olay düzgün şekilde tetiklenir.

Bir şeye mi bakıyorsunuz yoksa bu bir hata mı?

cevap

7

sen * yourFieldName ** değiştirildi kullanabilirsiniz 0.8+. Gözlenen özellik değiştiğinde, Changed yöntemi çağrılacaktır. String text iki yönlü veri olduğundan, textarea değerinin değiştirilmesi String text değerini değiştirir ve textChanged yöntemini çağırır. Bu, ilk kodla çalışır ve ObservableBox

import "dart:html"; 
import 'package:polymer/polymer.dart'; 

@CustomTag('dictionary-converter') 
class DictionaryConverter extends PolymerElement with ObservableMixin { 

    @observable String text = "Initial text"; 

    textChanged(oldValue) { 
    print("textarea: ${this.shadowRoot.query("textarea").value}"); 
    print("text: ${text}"); 
    } 
} 
ihtiyacı yoktur
0

Görünen o ki

in this stackoverflow question Yani ile sona erdi anlatıldığı gibi bir ObservableBox kullanmak zorunda: Polymer ile

import "package:polymer/polymer.dart"; 
import "package:observe/observe.dart"; 

@CustomTag('dictionary-converter') 
class DictionaryConverter extends PolymerElement with ObservableMixin { 

    ObservableBox csvText = new ObservableBox("Initial text"); 

    ready() { 
    csvText.changes.listen(convert); 
    } 

    void convert(x) { 
    String text = csvText.value; 
    } 

}