我正在使用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代码,例如this <kp-volume volume="11"></kp-volume>
。但是使用与否似乎没有什么区别super.attached
。这条线是做什么的?
attached
是超类中的一种方法,该方法PolymerElement
将元素实际附加到DOM。
如果您在子类中覆盖该方法attached
,则超类的方法将被禁用,因此该元素将永远不会被附加。
通过覆盖一个方法,您可以替换它的默认实现。
通过调用,super.attached()
您将在中调用默认实现,PolymerElement
并在替换中重用默认实现。
您可以在该super.attached()
行之前或之后添加自定义代码,这样您的自定义代码将在默认附加逻辑之前和/或之后执行。
覆盖attached
而不调用super.attached();
将破坏您的元素。也许您的示例元素太简单了,以至于无法注意到。
其他生命周期方法一样ready
,domReady
因为默认的实现是一个空函数不需要调用超级实现。(xxxChanged
生命周期方法是另一种方法,它们在超类中根本不存在)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句