gpt4 book ai didi

dart - 在自定义聚合物元素中,我需要在何处附加super.attach?

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

我正在使用Polymer.dart处理自定义元素和自定义属性,但是我无法找到super.attached行的作用。

<link rel="import" href="packages/polymer/polymer.html">
<polymer-element name="kp-volume">

<template>
<p>You turned the volume to {{volume}}.</p>
</template>

<script type="application/dart">
import 'package:polymer/polymer.dart';
import 'dart:html';

@CustomTag('kp-volume')
class KPVolume extends PolymerElement {

KPVolume.created() : super.created();

@published int volume = 0;

void attached() {
//where do I need this line for ?
super.attached();
volume = 5;
}
}
</script>
</polymer-element>

所以我知道,如果我更改 attached函数中的音量,那么我可以覆盖HTML代码,例如 <kp-volume volume="11"></kp-volume>。但是使用 super.attached似乎没有什么区别。这条线是做什么的?

最佳答案

attached是父类(super class)PolymerElement中的一种方法,该方法将元素实际附加到DOM。

如果您在子类中重写该方法,那么父类(super class)的attached方法将被禁用,因此该元素将永远不会被附加。

通过覆盖一个方法,您可以替换它的默认实现。

通过调用super.attached(),您可以在PolymerElement中调用默认实现,并在替换中重用默认实现。

您可以在super.attached()行之前或之后添加自定义代码,这样您的自定义代码将在默认附加逻辑之前和/或之后执行。

覆盖attached而不调用super.attached();将破坏您的元素。也许您的示例元素太简单了,以至于无法注意到。

其他生命周期方法(例如readydomReady)无需调用super实现,因为默认实现为空函数。
(xxxChanged lifecyle方法是另一种,在父类(super class)中根本不存在)。

关于dart - 在自定义聚合物元素中,我需要在何处附加super.attach?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28487331/

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