我有这样的课程:
class BaseModel {
Map objects;
// define constructor here
fetch() {
// fetch json from server and then load it to objects
// emits an event here
}
}
与backbonejs
一样,当我呼叫change
并在我的视图上为fetch
事件创建监听器时,我想发出change
事件。
但是从阅读文档开始,我不知道从哪里开始,因为有很多指向事件的内容,例如Event
Events
EventSource
等等。
你们能给我一个暗示吗?
答案 0 :(得分:17)
我假设您要发出不需要dart:html
库的事件。
您可以使用Streams API公开事件流,供其他人监听和处理。这是一个例子:
import 'dart:async';
class BaseModel {
Map objects;
StreamController fetchDoneController = new StreamController.broadcast();
// define constructor here
fetch() {
// fetch json from server and then load it to objects
// emits an event here
fetchDoneController.add("all done"); // send an arbitrary event
}
Stream get fetchDone => fetchDoneController.stream;
}
然后,在您的应用中:
main() {
var model = new BaseModel();
model.fetchDone.listen((_) => doCoolStuff(model));
}
使用原生Streams API很不错,因为这意味着您不需要浏览器来测试您的应用程序。
如果您需要发出自定义HTML事件,可以看到以下答案:https://stackoverflow.com/a/13902121/123471