我在Dart中有一些嵌套模板,如下所示:
<template id="id1">
<template id="id2">
<input type= id={{xxx}}>
</template>
</template>
在这种情况下,如何查询输入元素?我尝试了嵌套的Timer.run,但它没有用。
query("#id1").model = xxxx
Timer.run({ query("#id2").model=xxxxx;
Timer.run({ print(query(xxx));});
});
任何人都有任何建议?
谢谢!
=============================================== =========================
注意:嵌套模板实际上在一个表中,代码如下:
<div style="cursor:crosshair; -webkit-user-select: none; user-select: none;">
<table id="base_table" style="border-collapse:collapse; position: absolute; top:200px; left:200px; width:800px; height:400px" border="2">
<template id="table" repeat>
<tr>
<template id={{id}} repeat>
<td> <label style="border:0px; height:18px; width:80px" id={{Cell_ID}}> {{Cell_data}} </label> </td>
</template>
</tr>
</template>
</div>
答案 0 :(得分:2)
最好的办法是使用MutationObserver:
final observer = new MutationObserver(() {
... code here ...
observer.disconnect();
})..observe(node, childList: true, subtree: true);
很快,这个方法将在PolymerElement中提供:
onMutation(() => ... code here ...);
如上所述,它将自动断开观察。实施很简单:
void onMutation(Node node, void listener(MutationObserver obs)) {
final observer = new MutationObserver(() {
listener(observer);
observer.disconnect();
})..observe(node, childList: true, subtree: true);
}
因此,对于您的特定示例,请粘贴onMutation函数,然后将其写为:
var id1 = query("#id1");
id1.model = xxxx
onMutation(id1.parent, (_) {
var id2 = query("#id2");
id2.model = xxxxx;
onMutation(id2.parent, (_) {
print(query(xxx));
});
});