Dart Observable Change Handler

时间:2013-05-28 22:20:40

标签: dart observer-pattern

我正在寻找一种方法来使用处理函数来响应Dart中可观察集合的更改。我想将我的更改直接传递给函数。

List things = toObservable([]);
//...
things.onChange.listen((e) => onThingsChanged(e) ); //blows up
//...
function onThingsChanged(e){
   //...
}

显然没有onChange这样的东西,所以我在这里寻找什么?我找到的所有示例都只是在HTML中使用<template>标记来查看更改。

2 个答案:

答案 0 :(得分:4)

有一篇关于Observables and Data Binding with Web UI的好(官方)文章。我认为它仍在建设中,因此dartlang.org网站上还没有链接。

回答您问题的部分是:Expression Observers

您可以这样做:

List things = toObservable([]);

observe(() => things, onThingsChanged);

onThingsChanged(ChangeNotification e) {
  // ...
}

答案 1 :(得分:2)

马可答案的几点补充可能并不明显。

除了observe采用表达式之外,您还可以使用observeChanges来获取Observable的实例,这样您就可以编写observeChanges(things, (c) => ...)

更重要的是,如果您在Web UI上下文之外使用ObservableList(例如在独立脚本中),则不会立即触发更改。相反,更改会排队,您需要调用deliverChangesSync来触发通知。然后,监听器将收到变更列表的通知。