gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 00:43:15 25 4
gpt4 key购买 nike

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

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

我有 2 个 Polymer 元素:Parent 和 Child,我在 created 和 enteredView 函数中添加了输出。

输出是: Dart :

ChildElement created
ChildElement enteredView. Variable value: InitMsg
ParentElement created
ParentElement enteredView

Chrome :

ChildElement created
ParentElement created
ParentElement enteredView
ChildElement enteredView. Variable value: InitMsg

问题是:

  • 这个结果是完全随意的,还是有一些可以依赖的顺序?
  • 如果在 Parent 的 created 方法中分配了一个变量,那么新值显然在 Child 的 enteredView 中是不可见的。我需要根据新值进行一些计算。 child 中的 PathObserver 是否是获得此分配通知的唯一解决方案,或者当此值在 child 中可见时,是否在 parent 的 created() 之后发生时间/生命周期回调中的某个时刻?

我的代码:

parentelement.dart:

import 'package:polymer/polymer.dart';

@CustomTag('parent-element')
class ParentElement extends PolymerElement {
@observable String msg = "InitMsg";

ParentElement.created() : super.created() {
print('Parent created');
msg = "Changed msg";
}

@override
void enteredView() {
super.enteredView();
print('ParentElement enteredView');
}


}

parentelement.html

<link rel="import" href="childelement.html">

<polymer-element name="parent-element">
<template>
<div>
<span>Parent Msg: {{msg}}</span>
</div>
<child-element msg="{{msg}}"></child-element>
</template>
<script type="application/dart" src="parentelement.dart"></script>
</polymer-element>

childelement.dart:

import 'package:polymer/polymer.dart';

@CustomTag('child-element')
class ChildElement extends PolymerElement {
@published String msg;

ChildElement.created() : super.created() {
print('ChildElement created');
}

@override
void enteredView() {
super.enteredView();
print('ChildElement enteredView. Variable value: $msg');
}
}

childelement.html

<polymer-element name="child-element">
<template>
<div>
<span>Child msg: {{msg}}</span>
</div>
</template>
<script type="application/dart" src="childelement.dart"></script>
</polymer-element>

最佳答案

created 构造函数不适合如果你想依赖它们被调用的顺序。据我所知,polymerCreated 回调应该更适合您的要求。

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

关于dart - Polymer.dart 中生命周期事件的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23153860/

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