2

我在 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>
4

1 回答 1

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));
    });
});
于 2013-09-20T19:08:40.073 回答