Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 聚合物镖:是@可观察的';插入DOM的新值是多少?_Dart_Dart Polymer - Fatal编程技术网

Dart 聚合物镖:是@可观察的';插入DOM的新值是多少?

Dart 聚合物镖:是@可观察的';插入DOM的新值是多少?,dart,dart-polymer,Dart,Dart Polymer,假设我有一个自定义元素,它有一个@observable Map model=toObservable({'k':'v'})和html文件中的{model['k']}中,当我更改model时,如果不使用MutationObserver观察DOM,我如何知道新值已应用于DOM 必须在地图上使用toObservable(),否则将不会插入新值 为什么需要知道DOM中的新值何时更新?如果您确实需要它,您可以收听observemap的更改 你可以听模型的变化,但这也是聚合物的作用。要在将元素添加到DOM后

假设我有一个自定义元素,它有一个
@observable Map model=toObservable({'k':'v'})和html文件中的
{model['k']}
中,当我更改
model
时,如果不使用
MutationObserver
观察DOM,我如何知道新值已应用于DOM

  • 必须在地图上使用toObservable(),否则将不会插入新值

  • 为什么需要知道DOM中的新值何时更新?如果您确实需要它,您可以收听
    observemap
    更改


  • 你可以听模型的变化,但这也是聚合物的作用。要在将元素添加到DOM后执行代码,您可以像

    model.changes.listen((更改){
    新未来(()=>doSomethingAfterDomUpdate());
    });
    

    通过这种方式,您可以给Polymer时间来完成其更新。

    如果我理解正确,
    更改
    提供了
    更改记录
    ,这与映射本身有关,而不是与更改是否已应用于DOM有关。无论如何,谢谢你:)没错。但这就是为什么您有了未来的解决方案或变种观察者……如果您使用
    newfuture(()=>…)
    延迟您的代码,那么您就知道Polymer已经更新了DOM。Polymer本身会以相同的方式收到更改通知,但会立即更新DOM。如果您使用
    Future(()=>…)
    延迟您的代码,您的代码将在稍后的周期中执行。我不太了解事件是如何传递的以及未来是如何安排的,让我阅读更多内容并稍后确认:)