我有一个自定义按钮组件在聚合物Dart中完成:
<div id="buttonDiv">
<my-button id="traceButton"
mode="icon" faicon="fa-comment-o"
toolTip="Print a simple comment"
disabled="false" on-click="{{ traceSomething }}">
</my-button>
</div>我正在尝试将此按钮复制/粘贴到其他位置。所以用户在某个地方定义了它,我基本上是通过获取$['buttonDiv'].children然后将其插入到其他地方来移动它。问题是{{ traceSomething }}现在变得无关紧要了,因为它不是新的父类的一部分。我得到的错误是父对象,这是另一个聚合物组件没有实例getter "traceSomething“。
我的问题是,在我把"traceSomething“插入到其他地方之前,有没有办法删除它?我尝试删除"onClick“事件侦听器,但按钮仍然希望在单击时调用该函数。此外,我还尝试添加一个preventDefault等,比如:In Dart, if I listen to a click event with two listeners, how do I know which happens first?,但没有成功。
发布于 2015-11-20 14:34:05
我不确定你所说的复制/过去是什么意思。您是克隆元素,还是仅将其附加到其他一些元素的子元素中。
无论如何,如果事件侦听器是以声明方式添加的,我认为您不能删除它。如果您必须添加它,则很容易删除它并在以后进行readd。
import 'dart:async';
...
StreamSubscription subsc;
@override
attached() {
super.attached();
subscr = onClick.listen((e) => (this.parentNode as ShadowRoot).host.traceSomething(e));
}
@override
detached() {
super.detached();
if(subscr != null) {
subscr.cancel();
}
}另请参阅https://stackoverflow.com/a/22168745/217408关于访问聚合物元素的父元素(适用于Dart聚合物<= 0.16.x)
https://stackoverflow.com/questions/33817212
复制相似问题