【发布时间】:2014-04-21 16:19:09
【问题描述】:
我正在开发一个应用程序,但我注意到每个类都有很多与下面类中的 addRace 方法类似的代码:
@CustomTag( 'race-view' )
class RaceViewForm extends PolymerElement
{
RaceViewForm.created() : super.created();
void addRace( Event e, var detail, Element target )
{
var raceElem = $['race'];
if( raceElem.children.length < 1 )
{
raceElem.children.add( new Element.tag( 'race-form' ) );
}
raceElem.on[ DELETE_BUTTON_FORM_EVENT ]
.listen( (Event e)
{
(e.target as Element).remove();
dispatchEvent( new CustomEvent( RACE_VIEW_EVENT, detail:new Race() ));
});
}
}
我试图通过以下重构将重复代码移动到名为 shared.dart 的库中:
import 'dart:html';
import 'package:observe/observe.dart';
...
void addForm( Element target, String eventName, String dispatchEventName, dynamic instance )
{
var element = target;
if( element.children.length < 1 )
{
element.children.add( new Element.tag( 'race-form' ) );
}
element.on[ eventName ]
.listen( (Event e)
{
(e.target as Element).remove();
dispatchEvent( new CustomEvent( dispatchEventName, detail:instance ));
});
}
但是,dart IDE 将 addForm 方法中的 dispatchEvent 方法标记为未使用参数 onData (dynamic) -> void 定义。鉴于 dispatchEvent 在 'dart:html' 包中,我不确定下一步该做什么。
【问题讨论】:
标签: dart dart-polymer