gpt4 book ai didi

dart - 如何从自定义聚合物组件中删除 “on-click”

转载 作者:行者123 更新时间:2023-12-03 03:43:56 26 4
gpt4 key购买 nike

我在Polymer 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 }}现在不相关,因为它不属于新父代。我收到错误消息,说父对象(这是另一个聚合物组件)没有实例 setter/getter “traceSomething”。

我的问题是,有没有办法在其他地方插入“traceSomething”之前将其删除?我尝试删除“onClick”事件侦听器,但是按钮仍然希望在单击时调用该函数。另外,我尝试添加了preventDefault等,例如: In Dart, if I listen to a click event with two listeners, how do I know which happens first?
但是,没有运气。

最佳答案

我不确定复制/粘贴的意思。您是克隆元素,还是只是将其附加到其他一些子元素。

无论如何,如果以声明方式添加事件侦听器,我认为您无法删除它。如果必须添加它,则很容易删除并稍后阅读。

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关于访问Polymer元素的父元素(对于Dart Polymer <= 0.16.x)

关于dart - 如何从自定义聚合物组件中删除 “on-click”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33817212/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com