2014-01-13 4 views
1

Я пишу пример приложения с Polymer и Dart, и я сталкиваюсь с проблемой с наблюдаемыми атрибутами.dart и наблюдаемые атрибуты

Вот HTML код:

clickcounter.html

<polymer-element name="click-counter"> 
    <template> 
    <div> 
     <button on-click="{{increment}}">Click me</button><br> 
     <span>(click count: {{counter.count}})</span> 
    </div> 
    </template> 
    <script type="application/dart" src="clickcounter.dart"></script> 
</polymer-element> 

clickcounter.dart

@CustomTag('click-counter') 
class ClickCounter extends PolymerElement { 
    @published Counter counter = new Counter(); 

    ClickCounter.created() : super.created() { 
    } 

    void increment() { 
    counter.count++; 
    } 
} 


class Counter { 
    int count = 0; 
} 

При нажатии кнопки инкремента, атрибут counter.count увеличивается, но даже если атрибут счетчика является наблюдаемым, новое значение не отражает в DOM! Я прочитал, что класс должен также иметь аннотацию с @observable или Mixin с Observable, так что я пробовал:

@observable 
class Counter { 
    int count = 0; 
} 

и

class Counter with Observable { 
    int count = 0; 
} 

, но ни одно из этих решений работа! Единственный способ работы для аннотирования каждого атрибута, как это:

class Counter { 
    @observable int count = 0; 
} 

Я думал, что аннотировать класс сам по себе такой же, как аннотировать все атрибуты. Так кто-нибудь может объяснить мне, почему это не работает, и каков правильный способ сделать класс наблюдаемым, чтобы любые изменения отражались в DOM?

Env:

Полимер 0.9.3/Polymer выражения 0.9.1/Dart Editor версия 1.0.0_r30798 (STABLE) версия/Dart SDK 1.0.0.10_r30798

Спасибо за ваш ответ.

+0

try: