首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Dart中将函数传递给侦听器?

如何在Dart中将函数传递给侦听器?
EN

Stack Overflow用户
提问于 2013-09-06 00:15:42
回答 1查看 316关注 0票数 1

我想将一个函数传递给类构造函数。函数最终将在onBlur侦听器中使用。有什么不管用的。(FWIW,这段代码是在一个HttpRequest.getString()函数中执行的)

这样做是可行的:

代码语言:javascript
复制
query("${_element_id}_input").onBlur.listen((e) {
  InputElement species_id = query("#id_species_id");
  species_id.value = value;
  print(species_id.value);
});

如果将其替换为以下内容,则会出现一个错误:

代码语言:javascript
复制
  onBlur = ((e) {
    InputElement species_id = query("#id_species_id");
    species_id.value = value;
    print(species_id.value);
  });

  if (onBlur != null) {
    query("#{_element_id}_input").onBlur.listen(onBlur);
  }

如果我给函数命名,就会得到相同的错误。错误是:

代码语言:javascript
复制
Uncaught Error: SyntaxError: Internal Dartium Exception
Stack Trace:
#0      Document.query (file:///mnt/data/b/build/slave/dartium-lucid32-full-trunk/build/src/out/Release/gen/blink/bindings/dart/dart/html/Document.dart:123:128)
#1      query (dart:html:448:49)
#2      AutoComplete.AutoComplete.<anonymous closure> (package:canopy/auto_complete.dart:69:14)
#3      _ThenFuture._zonedSendValue (dart:async/future_impl.dart:371:24)
#4      _TransformFuture._sendValue.<anonymous closure> (dart:async/future_impl.dart:348:48)
#5      _ZoneBase._runInZone (dart:async/zone.dart:74:15)
#6      _ZoneBase._runUnguarded (dart:async/zone.dart:102:22)
#7      _ZoneBase.executeCallback (dart:async/zone.dart:58:23)
#8      _TransformFuture._sendValue (dart:async/future_impl.dart:348:26)
#9      _FutureImpl._setValueUnchecked (dart:async/future_impl.dart:184:26)
#10     _FutureImpl._setValue (dart:async/future_impl.dart:174:23)
#11     _FutureImpl._setOrChainValue (dart:async/future_impl.dart:336:16)
#12     _ThenFuture._zonedSendValue (dart:async/future_impl.dart:377:21)
#13     _TransformFuture._sendValue.<anonymous closure> (dart:async/future_impl.dart:348:48)
#14     _ZoneBase._runInZone (dart:async/zone.dart:82:17)
#15     _ZoneBase._runUnguarded (dart:async/zone.dart:102:22)
#16     _ZoneBase.executeCallback (dart:async/zone.dart:58:23)
#17     _TransformFuture._sendValue (dart:async/future_impl.dart:348:26)
#18     _FutureImpl._setValueUnchecked (dart:async/future_impl.dart:184:26)
#19     _FutureImpl._asyncSetValue.<anonymous closure> (dart:async/future_impl.dart:218:25)
#20     _asyncRunCallback (dart:async/event_loop.dart:9:15)
#21     _createTimer.<anonymous closure> (dart:async-patch/timer_patch.dart:8:13)
#22     _Timer._Timer.<anonymous closure> (file:///mnt/data/b/build/slave/dartium-lucid32-full-trunk/build/src/dart/tools/dom/src/native_DOMImplementation.dart:255:17)


Exception: SyntaxError: Internal Dartium Exception
  _DefaultZone.handleUncaughtError.<anonymous closure> (dart:async/zone.dart:146:7)
  _asyncRunCallback (dart:async/event_loop.dart:9:15)
  _asyncRunCallback (dart:async/event_loop.dart:13:7)
  _createTimer.<anonymous closure> (dart:async-patch/timer_patch.dart:8:13)
  _Timer._Timer.<anonymous closure> (file:///mnt/data/b/build/slave/dartium-lucid32-full-trunk/build/src/dart/tools/dom/src/native_DOMImplementation.dart:255:17)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-06 07:53:02

罪魁祸首不是处理程序函数,而是调用query来添加侦听器:

query("#{_element_id}_input").onBlur.listen(onBlur); --缺少“$”来解析{_element_id}

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18647926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档