在自定义聚合物元素中,我在哪里需要 super.attached?
Where do I need super.attached for in a custom polymer element?
我正在尝试使用 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
函数中更改音量,那么我就可以像这样 <kp-volume volume="11"></kp-volume>
覆盖 HTML 代码。但是使用 super.attached
似乎没有区别。这条线是做什么的?
attached
是 super class PolymerElement
中的一种方法,它将元素实际附加到 DOM.
如果您重写子class中的方法,超级class的attached
方法将被禁用,因此永远不会附加该元素。
通过覆盖方法,您可以替换它的默认实现。
通过调用 super.attached()
,您可以调用 PolymerElement
中的默认实现并在替换中重用默认实现。
您可以在 super.attached()
行之前或之后添加您的自定义代码,这样您的自定义代码将在默认附加逻辑之后 and/or 之前执行。
覆盖 attached
而不调用 super.attached();
会破坏您的元素。也许您的示例元素太简单了,无法引起注意。
其他生命周期方法如ready
、domReady
不需要调用超级实现,因为默认实现是一个空函数。
(xxxChanged
生命周期方法是另一种,它们根本不存在于 super class 中)。
我正在尝试使用 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
函数中更改音量,那么我就可以像这样 <kp-volume volume="11"></kp-volume>
覆盖 HTML 代码。但是使用 super.attached
似乎没有区别。这条线是做什么的?
attached
是 super class PolymerElement
中的一种方法,它将元素实际附加到 DOM.
如果您重写子class中的方法,超级class的attached
方法将被禁用,因此永远不会附加该元素。
通过覆盖方法,您可以替换它的默认实现。
通过调用 super.attached()
,您可以调用 PolymerElement
中的默认实现并在替换中重用默认实现。
您可以在 super.attached()
行之前或之后添加您的自定义代码,这样您的自定义代码将在默认附加逻辑之后 and/or 之前执行。
覆盖 attached
而不调用 super.attached();
会破坏您的元素。也许您的示例元素太简单了,无法引起注意。
其他生命周期方法如ready
、domReady
不需要调用超级实现,因为默认实现是一个空函数。
(xxxChanged
生命周期方法是另一种,它们根本不存在于 super class 中)。