我正在寻找一种方法来使用处理函数来响应Dart中可观察集合的更改。我想将我的更改直接传递给函数。
List things = toObservable([]);
//...
things.onChange.listen((e) => onThingsChanged(e) ); //blows up
//...
function onThingsChanged(e){
//...
}
显然没有onChange
这样的东西,所以我在这里寻找什么?我找到的所有示例都只是在HTML中使用<template>
标记来查看更改。
答案 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
来触发通知。然后,监听器将收到变更列表的通知。