【发布时间】:2014-08-30 03:45:55
【问题描述】:
查看类似问题,我意识到可能的解决方案是使用 MutationObservers,但我的用例似乎增加了更多复杂性。
飞镖代码:
class MyModel extends Object with Observable {
@observable num x = 0;
List list = toObservable([]);
}
void main() {
initPolymer().run(() {
Polymer.onReady.then((_) {
var template = querySelector("#bindValueTemplate");
var model = template.model = new MyModel();
var tbl = querySelector("#viewtbl");
new Timer.periodic(new Duration(seconds: 1), (_) {
tbl.children.clear();
model.x += 1;
model.list.add(model.x);
return model.x;
});
});
});
}
HTML 代码:
<body>
<template id="bindValueTemplate" is="auto-binding-dart">
<p>x = {{ x }}</p>
<ul>
<template repeat ="{{item in list}}">
<li>list item = {{item}}</li>
</template>
</ul>
<table class="table" id="viewtbl">
<tr>
<td>67</td>
<td>b9</td>
</tr>
</table>
</template>
</body>
从 dart 代码中可以看出,我想定期删除表 #viewtbl 的子元素(我没有包含应该动态向表添加数据的代码)。但是对于当前的代码,我得到一个异常,因为表变量 (tbl) 始终保持为空。
如果我将表移到“bindValueTemplate”之外,那么 querySelector 会起作用,但我会丢失与该表的数据绑定。
有人可以帮我吗:
一种解决方案,其中我保留了与表元素的 2 路数据绑定以及 querySelector 访问以删除表中的子元素。
如果表在模板内,querySelector 返回 null,但如果表在模板外,则工作正常。
【问题讨论】:
标签: dart polymer dart-polymer