提供自定义组件的回调

时间:2014-04-07 14:55:24

标签: dart angular-dart

我制作了一个自定义组件,基本上包装了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端到达的,因为第一个片段中的print已经执行了。

如果我改为将属性指定为callback="ctrl.lineClicked()",我会得到一个奇怪的例外:

Closure call with mismatched arguments: function 'call'

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

1 个答案:

答案 0 :(得分:7)

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

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

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