Polymer是否为组件设置了“componentAppeared”事件?

时间:2016-06-16 18:21:07

标签: events polymer components polymer-1.0

我希望在显示组件时将焦点设置在标签上,并且我想知道Polymer是否内置了它,如果不是,我想知道其他人是如何做到的。感谢。

2 个答案:

答案 0 :(得分:2)

您需要使用加载组件并附加到dom后调用的attached callback

以下是您需要做的一些示例代码(and here a jsbin with it working):

<dom-module id="x-test">
  <template>
    <a id="tofocus" href="/">I'm going to get focused</a>
    <a>but I'm not</a>
  </template>
  <script>
    Polymer({
      is: 'x-test',
      attached: function () {
        this.$.tofocus.focus();
      }
    });
  </script>
</dom-module> 

答案 1 :(得分:0)

Polymer中没有componentAppeared的概念。在DOM中标记的每个元素都可以“出现”。

您似乎希望通过<neon-animated-pages>组件显示“页面”。包含在<neon-animated-pages>中的每个页面都已标记为DOM - 每个页面的可见性由控制器元素通过CSS display:block / display:none处理

如果您想在显示页面时执行的操作,则必须手动连接

<neon-animated-pages selected="{{selected}}" on-neon-animation-finish="_focus">

  <neon-animatable class="red" entry-animation="fade-in-animation" exit-animation="fade-out-animation">
    <h1>Page 1</h1>
    <a id="label0" href="#">Focus me</a>
  </neon-animatable>

  <neon-animatable class="green" entry-animation="fade-in-animation" exit-animation="fade-out-animation">
    <h1>Page 2</h1>
    <a id="label1" href="#">Focus me</a>
  </neon-animatable>

</neon-animated-pages>

...

  _focus: function () {
    this.$['label'+this.selected].focus();
  }

Jsbin:http://jsbin.com/celesobiba/edit?html,console,output