gpt4 book ai didi

dart - 无法使用 Dart-Polymer 中自动绑定(bind) dart 模板中的选择器进行查询

转载 作者:行者123 更新时间:2023-12-03 02:53:52 25 4
gpt4 key购买 nike

看着类似的问题,我意识到一个可能的解决方案是使用 MutationObservers,但我的用例似乎增加了更多的复杂性。

Dart 代码:

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 将起作用,但我会丢失与该表的数据绑定(bind)。

有人可以帮我吗:
  • 一个解决方案,我保留与表元素的 2 路数据绑定(bind)以及 querySelector 访问以删除表中的子元素。
  • 如果表在模板内,则 querySelector 返回 null 的原因,但如果表在模板外则有效。
  • 最佳答案

    polymer 需要一些空气才能呼吸。
    当您设置模型时,这并不意味着元素已经创建。我不知道,但我认为这是异步完成的。
    试试这种方式:

    void main() {

    initPolymer().run(() {
    Polymer.onReady.then((_) {
    var template = querySelector("#bindValueTemplate");
    var model = template.model = new MyModel();

    new Future(() { // <== make async to allow Polymer do its async tasks in between
    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;
    });
    });
    });
    });
    }

    关于dart - 无法使用 Dart-Polymer 中自动绑定(bind) dart 模板中的选择器进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25578823/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com