【发布时间】:2014-02-01 05:12:02
【问题描述】:
我正在使用 Polymer 和 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 属性会递增,但即使 counter 属性是可观察的,新值也不会反映到 DOM 中! 我读过该类还必须使用 @observable 或 mixin 与 Observable 进行注释,所以我尝试了:
@observable
class Counter {
int count = 0;
}
和
class Counter with Observable {
int count = 0;
}
但是这些解决方案都不起作用!唯一的工作方法是像这样注释每个属性:
class Counter {
@observable int count = 0;
}
我认为注释类本身与注释所有属性相同。所以任何人都可以向我解释为什么它不起作用以及使类可观察以便任何更改都反映在 DOM 中的正确方法是什么?
环境:
Polymer 0.9.3 / Polymer 表达式 0.9.1 / Dart Editor 版本 1.0.0_r30798 (STABLE) / Dart SDK 版本 1.0.0.10_r30798
感谢您的回答。
【问题讨论】:
-
尝试: 在你有 counter.count 的模板中
-
Paul 你能给一个 的链接吗:我已经看到了这种代码,但是直到现在我还没有找到一篇文章来解释它的作用!谢谢
-
这里提到过:pub.dartlang.org/packages/polymer_expressions 加上更一般的这里。 polymer-project.org/docs/polymer/databinding.html 这可能与它无关,但是......
标签: dart dart-polymer