Dart 移除和重新添加聚合元素实例的正确方法是什么?

Dart 移除和重新添加聚合元素实例的正确方法是什么?,dart,dart-polymer,polymer,Dart,Dart Polymer,Polymer,移除并重新添加聚合元素实例会破坏数据绑定。调用prepareElement()会重新连接所有内容,但这是最好的方法吗 给定此HTML,使用 代码呢 main(){ Logger.root.level=level.ALL; Logger.root.onRecord.listen((LogRecord rec){ 打印(${rec.loggerName}:${rec.level.name}:${rec.time}:${rec.message}'); }); initPolymer()运行(){

移除并重新添加聚合元素实例会破坏数据绑定。调用prepareElement()会重新连接所有内容,但这是最好的方法吗

给定此HTML,使用


代码呢

main(){
Logger.root.level=level.ALL;
Logger.root.onRecord.listen((LogRecord rec){
打印(${rec.loggerName}:${rec.level.name}:${rec.time}:${rec.message}');
});
initPolymer()运行(){
Polymer.onReady.then((){
var elem=querySelector('click#u counter_id');
var parent=elem.parent;
elem.remove();
新计时器(新持续时间(秒:1),(){
parent.children.add(elem);
//这将重新连接绑定。是否正确?
(元素为聚合关系)。prepareElement();
});
});
});            
}
一切似乎都很好。但我们会记录一条警告:

polymer.events:FINE:event:[按钮]。单击时=>[单击计数器]。增量()
polymer.unbind:精细:[单击计数器]取消取消绑定
polymer.unbind:警告:[单击计数器]已解除绑定,无法取消解除绑定
polymer.events:FINE:event:[按钮]。单击时=>[单击计数器]。增量()

有没有更好的方法来移除并重新添加聚合物元素实例?

我自己没有尝试过,但它似乎是合理的。 我希望作者不介意从另一个角度回答问题

查看polymer.js信息位后,我发现有一个cancelUnbindAll函数,在创建元素或将preventDispose属性设置为true时必须调用该函数

对于可能需要执行相同操作的任何人,在Dart实现中,必须在超级调用后在leftView函数中调用cancelUnbindAll,如下所示:

void分离(){
super.leftView();
此参数为.cancelUnbindAll(preventCascade:true);
}
或者,您可以简单地覆盖自定义元素中的preventDispose属性:

bool get preventDispose=>true;
编辑 还有一个
preventDispose
请参见

可能是