什么是获取条件元素的自定义元素对象的最佳方法

时间:2013-09-18 20:06:21

标签: dart dart-webui polymer

使用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的一部分,因此找不到。还有其他方法来掌握它吗?

否则我将不得不确定何时显示该条件模板然后抓住它。

1 个答案:

答案 0 :(得分:1)

这可能取决于“使用nextButton做一些有用的东西”的确切含义,但实现此目的的Polymer-ic方法通常是将任何可重用的行为与其操作的DOM一起封装。也就是说,不是在封装元素的#nextButton方法中包含对inserted进行操作的代码,而是创建一个新的自定义元素,让我们称之为super-button,然后放入super-button的{​​{1}}或ready方法中的相关代码。

然后,如果您发现某些行为确实应该在inserted之外,请遵循与上面使用的super-button处理程序相同的模式。让on-click在适当的时间触发custom event,然后声明性地将处理程序映射到该事件:

super-button