使用Polymer Dart我经常需要掌握其中一个子元素后面的Polymer-Element对象。
ButtonElement nextButton;
void inserted()
{
//Get hold of the elements
nextButton = shadowRoot.query('#nextButton');
//Do some thing useful with nextButton
}
<template if="{{emailValid}}">
<button id="nextButton" on-click="nextStep">
</template>
这很好用。但是,如果在这种情况下,nextButton位于条件模板下面,则在调用inserted()时它不是DOM的一部分,因此找不到。还有其他方法来掌握它吗?
否则我将不得不确定何时显示该条件模板然后抓住它。
答案 0 :(得分:1)
这可能取决于“使用nextButton做一些有用的东西”的确切含义,但实现此目的的Polymer-ic方法通常是将任何可重用的行为与其操作的DOM一起封装。也就是说,不是在封装元素的#nextButton
方法中包含对inserted
进行操作的代码,而是创建一个新的自定义元素,让我们称之为super-button
,然后放入super-button
的{{1}}或ready
方法中的相关代码。
然后,如果您发现某些行为确实应该在inserted
之外,请遵循与上面使用的super-button
处理程序相同的模式。让on-click
在适当的时间触发custom event,然后声明性地将处理程序映射到该事件:
super-button