17

我有这样的课:

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等等。

各位大神能给个提示吗?

4

1 回答 1

29

我假设您想要发出不需要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 很好,因为这意味着您不需要浏览器来测试您的应用程序。

If you are required to emit a custom HTML event, you can see this answer: https://stackoverflow.com/a/13902121/123471

于 2013-03-31T04:00:01.260 回答