Function 如何在Dart中将函数传递给侦听器?
我想把一个函数传递给一个类构造函数。该函数最终将在onBlur侦听器中使用。有些东西坏了。(FWIW,此代码正在“then”函数a HttpRequest.getString()中执行) 这项工作:Function 如何在Dart中将函数传递给侦听器?,function,dart,Function,Dart,我想把一个函数传递给一个类构造函数。该函数最终将在onBlur侦听器中使用。有些东西坏了。(FWIW,此代码正在“then”函数a HttpRequest.getString()中执行) 这项工作: query("${_element_id}_input").onBlur.listen((e) { InputElement species_id = query("#id_species_id"); species_id.value = value; print(species_id.
query("${_element_id}_input").onBlur.listen((e) {
InputElement species_id = query("#id_species_id");
species_id.value = value;
print(species_id.value);
});
如果将其替换为以下内容,则会出现错误:
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);
}
如果我命名函数,我会得到相同的错误。错误是:
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)
未捕获错误:语法错误:内部Dartium异常
堆栈跟踪:
#0文档查询(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个查询(dart:html:448:49)
#2自动完成。自动完成。(包装:天篷/自动完成。省道:69:14)
#3\u ThenFuture.\u zonedSendValue(dart:async/future\u impl.dart:371:24)
#4.改变未来。传递价值。(dart:async/future\u impl.dart:348:48)
#5 _ZoneBase._runInZone(dart:async/zone.dart:74:15)
#6 _ZoneBase._rununguard(dart:async/zone.dart:102:22)
#7_ZoneBase.executeCallback(dart:async/zone.dart:58:23)
#8 \u TransformFuture.\u sendValue(dart:async/future\u impl.dart:348:26)
#9\u FutureImpl.\u setValueUnchecked(dart:async/future\u impl.dart:184:26)
#10\u FutureImpl.\u设置值(dart:async/future\u impl.dart:174:23)
#11 _FutureImpl._setOrChainValue(dart:async/future_impl.dart:336:16)
#12 \u ThenFuture.\u zonedSendValue(dart:async/future\u impl.dart:377:21)
#13.改变未来。传递价值。(dart:async/future\u impl.dart:348:48)
#14 _ZoneBase._runInZone(dart:async/zone.dart:82:17)
#15 _ZoneBase._rununguard(dart:async/zone.dart:102:22)
#16_ZoneBase.executeCallback(dart:async/zone.dart:58:23)
#17 TransformFuture.sendValue(dart:async/future\uImpl.dart:348:26)
#18 _FutureImpl._setValueUnchecked(dart:async/future_impl.dart:184:26)
#19 FutureImpl.asyncSetValue。(dart:async/future_impl.dart:218:25)
#20\u asyncRunCallback(dart:async/event\u loop.dart:9:15)
#21 createTimer。(dart:async patch/timer_patch.dart:8:13)
#22定时器。(file:///mnt/data/b/build/slave/dartium-lucid32-full-trunk/build/src/dart/tools/dom/src/native_DOMImplementation.dart:255:17)
异常:SyntaxError:内部Dartium异常
_DefaultZone.handleuncaughtror。(省道:异步/分区。省道:146:7)
_asyncRunCallback(dart:async/event\u loop.dart:9:15)
_asyncRunCallback(dart:async/event\u loop.dart:13:7)
_创建计时器。(dart:async patch/timer_patch.dart:8:13)
_计时器。(file:///mnt/data/b/build/slave/dartium-lucid32-full-trunk/build/src/dart/tools/dom/src/native_DOMImplementation.dart:255:17)
罪魁祸首不是handler函数,而是调用query
添加侦听器:
query(“#{u元素_id}{u输入”).onBlur.listen(onBlur)代码>-缺少“$”来解析应该有效的{u元素\u id}
。你在显示所有的代码吗?我注意到在onBlur
声明之前没有var
。