Я пишу пример приложения с 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
Спасибо за ваш ответ.
try: в шаблоне, где у вас есть counter.count –
Возможный дубликат [Получение ошибки преобразования dart2js на полимерный проект] (http://stackoverflow.com/questions/20855777/getting-error-converting- dart2js-on-polymer-project) –
Paul вы можете дать ссылку на <привязка к шаблону>: я уже видел такой код, но до сих пор мне не удалось найти статью, которая объясняет, что она делает! Thks –