Polymer.dart 1.0.0-rcx中的事件处理程序需要什么签名

时间:2015-09-22 07:19:07

标签: dart dart-polymer

<child-element>会触发像

这样的事件
fire('spoken', detail: {'message': this.$['myInput'].value});

<parent-element>处理事件,如

<div on-spoken="heard">
  <child-element></child-element>
  <div>{{message}}</div>
</div>

// @eventHandler <= 1.0.0-rc.1
@reflectable
void heard(Event e) {
  set('message', 'heard: ' + e.detail['message']);
}

这导致

  

关闭调用参数不匹配:函数&#39;调用&#39;

     

NoSuchMethodError:传递给名为&#39; call&#39;的方法的参数数量不正确   接收者:关闭:(事件)=&gt;无效功能&#39;听到&#39; :.   尝试调用:调用(实例&#39; CustomEventWrapper&#39;,_LinkedHashMap len:1)

1 个答案:

答案 0 :(得分:3)

事件处理程序应具有此签名

// @eventHandler <= 1.0.0-rc.1
@reflectable
void heard(Event e, var detail) {
  set('message', 'heard: ' + detail['message']);
}

为了使您更希望直接从代码中调用事件处理程序并且不使用处理程序内部的参数,您可以使一个或两个参数成为可选项。

@reflectable
void heard(Event e, [_]) {
  set('message', 'heard');
}

@reflectable
void heard([_, __]) {
  // do something
}