从javascript调用dart编译的Javascript时如何将回调函数传入dart编译的Javascript?

时间:2014-03-29 03:20:08

标签: dart dart-js-interop

我试图将我的项目逐步转换为飞镖。我已经将一个独立的库转换为Dart,我在我的项目中使用Dart编译的javascript。感谢my other question提供的帮助。我能够调用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回调。

2 个答案:

答案 0 :(得分:2)

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

进行调用

答案 1 :(得分:1)

来自您之前的问题,

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

// pass js function which is already defined above.
someJsObject.callMethod('someOriginalJsFunction', [js.context['sayGreeting']]);