Dart コードで @observable 宣言を使用して、String または num 型を観察可能にすることができます。
@observable
var x = '';
および{{ }}
htmlの構文:
<div>x = {{x}}</div>
ただし@observable
、リストとマップでは機能しません。それらを観察可能にするにはどうすればよいですか?
Dart コードで @observable 宣言を使用して、String または num 型を観察可能にすることができます。
@observable
var x = '';
および{{ }}
htmlの構文:
<div>x = {{x}}</div>
ただし@observable
、リストとマップでは機能しません。それらを観察可能にするにはどうすればよいですか?
toObservable()
List または Map を引数として使用します。これにより、List または Map オブジェクトと UI でのその表現との間にバインディングが作成されます。
次の例では、 を使用していtoObservable()
ます。List オブジェクトと Map オブジェクトには、毎秒データが追加されていることに注意してください。適切なバインディングをtoObservable()
作成すると、これらのオブジェクトの UI が自動的に更新され、追加されたアイテムが表示されます。
リストまたはマップがclear()
編集されると、UI はこれをもう一度反映します。
このようなスクリプトを作成して実行する方法については、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>