13

我想做类似的事情

// WARNING: this code does not work, it's illustrative
query("#myBtn").onClick.listen((e) {
  window.fire["foo"];
});

window.on["foo"].listen((e) => print("foo was here"));

window.on["foo"].listen((e) => print("and here"));

是否可以?如何?我已经在 Google 上搜索了几个小时,但我对一般的编程有点陌生,所以我真的不知道这类事情的任何关键字。

谢谢!:)

-- 编辑:已解决 --

以下是传递参数的方法(编辑会抱怨,但它有效)

List<String> myData = ["one","two"];

query("#myBtn").onClick.listen((e) {
  window.on["foo"].dispatch(new CustomEvent("foo", canBubble: false, cancelable: false, detail: myData));
});

window.on["foo"].add((e) => print( e.detail[1] ));

:-)

4

2 回答 2

15

你说你想传递数据。假设我们有这个类:

class Person {
    String name;
    int age;
}

那么这个监听器:

window.on['foo'].listen((e) {
  Person p = e.detail;

  print(p.name); // Jack
});

我们需要传递数据的只是编写如下内容:

var p = new Person()
  ..name = 'Jack'
  ..age = 25;

var e = new CustomEvent('foo', detail: p);

window.on['foo'].dispatch(e);

这是做到这一点的方法。请参阅文档:

于 2012-12-16T14:15:54.593 回答
6

这应该有效:

window.on['foo'].listen((e) => print("foo was here"));

请参阅文档:

于 2012-12-15T23:27:46.770 回答