制作地图或Web UI中观察到一个列表(Making a Map or a List observa

2019-08-19 12:16发布

我可以做一个字符串或者号码类型通过使用飞镖代码@observable宣言观察到:

@observable
var x = '';

{{ }}语法在html:

<div>x = {{x}}</div>

@observable不使用列表和地图的工作。 如何使这些观察到的?

Answer 1:

使用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>


文章来源: Making a Map or a List observable in Web UI