我可以做一个字符串或者号码类型通过使用飞镖代码@observable宣言观察到:
@observable
var x = '';
和{{ }}
语法在html:
<div>x = {{x}}</div>
但@observable
不使用列表和地图的工作。 如何使这些观察到的?
我可以做一个字符串或者号码类型通过使用飞镖代码@observable宣言观察到:
@observable
var x = '';
和{{ }}
语法在html:
<div>x = {{x}}</div>
但@observable
不使用列表和地图的工作。 如何使这些观察到的?
使用toObservable()
以列表或地图作为参数。 这将创建列表或地图对象及其在UI表示之间的结合。
下面的示例使用toObservable()
注意,列表和地图对象已添加到他们每一秒的数据。 随着toObservable()
创造适当的结合,这些对象的UI自动神奇地更新以显示添加的项目。
当列表或地图中有clear()
版,在用户界面再次反映了这一点。
有关如何构建和运行一个脚本指令,例如这一次,看到http://www.dartlang.org/articles/web-ui/tools.html 。
这里是main.dart
文件:
import 'dart:async';
import 'package:web_ui/web_ui.dart';
@observable
num x = 0; // @observable works fine with a number.
List list = toObservable(new List());
Map<String, num> map = toObservable(new Map());
void main() {
new Timer.periodic(new Duration(seconds: 1), (_) {
x += 1;
list.add(x);
map[x.toString()] = x;
if (x % 4 == 0) {
list.clear();
map.clear();
}
return x;
});
}
这里是伴随dart.html
文件:
<!DOCTYPE html>
<html>
<body>
<p>x = {{ x }}</p>
<ul>
<template iterate='item in list'>
<li>list item = {{item}}</li>
</template>
</ul>
<ul>
<template iterate='key in map.keys'>
<li>map key = {{key}}, map value = {{map[key]}}</li>
</template>
</ul>
<script type="application/dart" src="main.dart"></script>
</body>
</html>