Polymer.dart中生命周期事件的顺序

Polymer.dart中生命周期事件的顺序,dart,dart-polymer,Dart,Dart Polymer,我对Polymer.dart中生命周期事件顺序的差异有问题 在Dartium中运行dart代码和在Chrome中运行编译的JavaScript时,事件的发生顺序不同 我有两个聚合元素:父元素和子元素,我在created和enteredView函数中添加了输出 输出为: 飞镖: 铬: ChildElement created ParentElement created ParentElement enteredView ChildElement enteredView. Variable valu

我对Polymer.dart中生命周期事件顺序的差异有问题

在Dartium中运行dart代码和在Chrome中运行编译的JavaScript时,事件的发生顺序不同

我有两个聚合元素:父元素和子元素,我在created和enteredView函数中添加了输出

输出为: 飞镖:

铬:

ChildElement created
ParentElement created
ParentElement enteredView
ChildElement enteredView. Variable value: InitMsg
问题是:

  • 这个结果是完全武断的,还是有某种可以依赖的秩序
  • 如果在父级的created方法中分配了变量,则新值在子级的enteredView中显然不可见。我需要根据新值做一些计算。PathObserver in child是唯一一个收到此分配通知的解决方案,还是在父级的created()之后,当此值在child中可见时,会发生时间/生命周期回调
我的代码:

parentelement.dart:

import'包装:polymer/polymer.dart';
@CustomTag('父元素')
类ParentElement扩展了聚合关系{
@可观察字符串msg=“InitMsg”;
ParentElement.created():super.created(){
打印(“父项已创建”);
msg=“已更改的msg”;
}
@凌驾
无效输入视图(){
super.enteredView();
打印('ParentElement enteredView');
}
}
parentelement.html


父消息:{{Msg}
childelement.dart:

import'包装:polymer/polymer.dart';
@CustomTag('子元素')
类ChildElement扩展了聚合关系{
@已发布字符串消息;
ChildElement.created():super.created(){
打印('ChildElement created');
}
@凌驾
无效输入视图(){
super.enteredView();
打印('ChildElement enteredView.Variable value:$msg');
}
}
childelement.html


子消息:{{msg}

如果您希望依赖调用它们的顺序,则创建的
构造函数不合适。
据我所知,
polymerCreated
回调应该更适合您的需求


我真的不知道,因为
enteredView
attached
满足了我的所有要求,因此我从未使用过其他东西(
entereView
attached
甚至为自己的代码提供了两个不同的插槽:“before
super.attached()
”和“before
super.attached()
”)

我遇到了类似的问题,并在一篇博文()中对此进行了描述。我的诀窍是将
-语句不放在中心位置,而是放在自定义元素本身中。我的应用程序只有一个自定义GUI元素的导入。GUI导入其直接自定义子元素等

希望这有帮助
罗伯特

+1,你知道为什么输入的视图顺序不同吗:dartium中的孩子优先,Chrome中的家长优先?据我所知,这一点最近发生了变化。也许在Chrome中,这取决于polifill,它的行为可能不同。我认为你应该提交一个bug。谢谢你的更新。我在这个问题上添加了一个链接。根据4月21日JMessery在
中发布的帖子,应该将它保留在
标签之外,否则它在构建到JavaScript时将无法工作。
ChildElement created
ParentElement created
ParentElement enteredView
ChildElement enteredView. Variable value: InitMsg