1

Polymer Dart を使用すると、子要素の 1 つの背後にある 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 が条件付きテンプレートの下にある場合、insert() が呼び出されたときに DOM の一部ではないため、見つかりません。それをつかむ他の方法はありますか?

それ以外の場合は、その条件付きテンプレートがいつ表示されるかを判断し、それを取得する必要があります。

4

1 に答える 1

1

これは、「nextButton で何か役立つことを行う」が正確に何を意味するかに依存する可能性がありますが、これを達成するためのポリマー的な方法は、一般に、再利用可能な動作をそれが動作する DOM とともにカプセル化することです。つまり#nextButton囲んでいる要素のinsertedメソッドに操作するコードを含める代わりに、新しいカスタム要素を作成し、それを呼び出してsuper-button、関連するコードをsuper-buttonreadyまたはinsertedメソッドに入れます。

次に、実際には の範囲外にあるはずの動作が見つかった場合は、上記で使用したハンドラーsuper-buttonと同じパターンに従います。on-click適切なタイミングでカスタム イベントsuper-buttonを発生させ、ハンドラーをそのイベントに宣言的にマップします。

<template if="{{emailValid}}">
   <super-button on-click="nextStep" on-my-special-event="mySpecialEventHandler"></super-button>
</template>
于 2013-09-19T04:54:21.507 に答える