我正在添加聚合物元素。我想在点击其(自己)图像时删除元素(self)。根据封装,我将不得不让父母删除孩子。但这需要为父母生成聚合物元素(我在这里吗?)。 children.add没有为聚合物元素定义。我这样做,我打算在将聚合物元素添加到表单之前做一些检查。
已经阅读: How to remove a child component with a delete button in the child itself
How do I fire a custom event from Polymer Dart?
How do you dispatch and listen for custom events in Polymer?
我通过派遣事件传递什么?
INIT-item.html
<polymer-element name="init-item" >
<template>
<input type="image" src="button_minus_red.gif" on-click="{{remove}}" width = "15" height ="15">
{{Name}}<br>
</template>
<script type="application/dart" src="init-item.dart"></script>
</polymer-element>
INIT-item.dart
@HtmlImport('init-item.html')
import 'dart:html';
import 'dart:async';
import 'package:polymer/polymer.dart';
@CustomTag('init-item')
class PItem extends PolymerElement{
@observable String Name='hello';
void remove(){
Name='';
}
所以目前点击图片时,name属性会重置。但这只发生在从main.dart生成的后续click事件中。这是由于数据绑定。我如何启动双向数据绑定。??
main.html(聚合物标签不添加,尽管有建议。无法弄清楚)
...
<form id="youritems">
</form>
...
添加到上述标签的聚合物项目。
main.dart
...
main() async{
.. initPolymer().then((_) {});
}
..
...{..
var input = new InputElement(type:"image");
input.onClick.listen((p){
p.preventDefault();
populateYourPlayers(teams[i]);
});
}
void populateItems(String name){
Polymer.onReady.then((_) {
var pl = new Element.tag('player-item');
pl.playerName = name;
yourPlayer.children.add(pl);
});
}
..
答案 0 :(得分:1)
如果您将点击处理程序从remove
重命名为例如removeItem
,那么您只需在处理程序中调用remove()
即可。
<input type="image" src="button_minus_red.gif" on-click="{{removeItem}}" width = "15" height ="15">
void removeItem(){
Name='';
remove(); // removes the init-item (self)
}
remove
是所有元素的现有方法。如果您使用自己的方法命名remove
,则会覆盖默认的remove
方法,并且不能再调用原始方法(除了使用super.remove();
在您的元素中之外)