Dart 为自定义组件提供回调

Dart 为自定义组件提供回调,dart,angular-dart,Dart,Angular Dart,我做了一个自定义组件,它基本上包装了一个d3折线图。现在,我希望能够注册一个回调,用于单击图表中的线条 我给组件一个@NgCallback参数,然后将事件发送到: class NetworkSummaryComponent implements NgShadowRootAware { @NgCallback('callback') Function callback; void onShadowRoot(ShadowRoot shadowRoot) { ... ch

我做了一个自定义组件,它基本上包装了一个d3折线图。现在,我希望能够注册一个回调,用于单击图表中的线条

我给组件一个
@NgCallback
参数,然后将事件发送到:

class NetworkSummaryComponent implements NgShadowRootAware {
  @NgCallback('callback')
  Function callback;

  void onShadowRoot(ShadowRoot shadowRoot) {
    ...
    chart.callMethod('listen', ['line-click', (ev) {
        var name = ev.callMethod('getLineName');
        print(name);
        callback({'name': name});
    }]);
  }
}
使用组件时,我将控制器的一个函数指定为回调:

<network-summary
    ...
    callback="ctrl.lineClicked">
</network-summary>

但是,该函数从未真正调用过,我知道回调是从JS端到达的,因为第一个代码段中的打印是执行的

如果改为将属性指定为
callback=“ctrl.lineClicked()”
则会出现一个奇怪的异常:

参数不匹配的闭包调用:函数“调用”


我找不到任何关于如何正确执行回调的官方文档,所以我不确定我做错了什么。。有什么想法吗?

事实证明,我必须在属性中显式命名预期参数:

<network-summary
    ...
    callback="ctrl.lineClicked(name)">
</network-summary>


希望这对下一个遇到这个问题的人有用。

谢谢,我遇到了同样的问题,在看到这篇文章之前花了几个小时。