2

I'm looking for a way to use a handler function to respond to changes to an observable collection in Dart. I want to pipe my change directly to a function.

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

There obviously isn't such thing as onChange, so what am I looking for here? All the examples I find are just watching the changes with a <template> tag in the HTML.

4

2 回答 2

4

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

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

你可以这样做:

List things = toObservable([]);

observe(() => things, onThingsChanged);

onThingsChanged(ChangeNotification e) {
  // ...
}
于 2013-05-28T22:58:36.827 回答
2

Marco 的回答几乎没有添加,这可能并不明显。

除了observewhich 接受表达式之外,您还可以使用observeChangeswhich 接受 的实例Observable,因此您可以编写observeChanges(things, (c) => ...).

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

于 2013-05-29T20:42:21.663 回答