1

我正在尝试逐步将我的项目转换为飞镖。我已将独立库转换为 Dart,并且在我的项目中使用 Dart 编译的 javascript。感谢您对我的其他问题的帮助。我可以调用 Dart 编译的 javascript 函数。现在我面临另一个难题。如果我的 Dart 函数需要回调,我如何将 Javascript 函数传递给 Dart 生成的 javascript 函数?

我想做的是从 Javascript 注册一个 Dart 事件处理程序,例如:

在我的 Dart 中,我有事件总线,dart 对象可以通过以下方式注册事件处理程序:

bus.on('eventName', callbackFunc);

Dart 对象通过以下方式触发事件:

bus.fire('eventName', data);

我通过以下方式将总线暴露给 Javascript 世界:

js.context['registerEvent'] = bus.on;

在 Javascript 中,我想调用

registerEvent('someEvent', function() { console.log('JS callback' });

注册一个事件处理程序,当 Dart 对象触发事件时,将调用 JS 回调。

4

2 回答 2

2

您可以尝试将其作为参数传递给 Dart 并使用param.apply([])

于 2014-03-29T07:45:59.440 回答
1

从你之前的问题,

js.context["sayGreeting"] = (message) {
  print("greeting: $message");
};

// pass js function which is already defined above.
someJsObject.callMethod('someOriginalJsFunction', [js.context['sayGreeting']]);
于 2014-03-29T09:29:34.940 回答