attribute - queryselector javascript ejemplos



El uso de querySelector para encontrar elementos anidados dentro de una plantilla de Polymer devuelve null (2)

Estoy tratando de usar pestañas de papel dentro del elemento nuevo (tabs-list) pero después de las pestañas de impresión no puedo usar querySelector para cambiar una seleccionada.

Código del elemento (sin estilo):

<link rel="import" href="../components/polymer/polymer.html">
<link rel="import" href="../sprint-service/sprint-service.html">
<link rel="import" href="../components/paper-tabs/paper-tabs.html">

<polymer-element name="tab-list" attributes="show">
  <template>
    <sprint-service id="service" sprints="{{sprints}}"></sprint-service>   
    <paper-tabs selected="all" valueattr="name" self-end>
      <paper-tab name="all">ALL</paper-tab>
      <template repeat="{{sprint in sprints}}">
        <paper-tab name="{{sprint.id}}">{{sprint.id}}</paper-tab>
      </template>
    </paper-tabs>
  </template>
  <script>
    Polymer('tab-list', {
      ready: function() {
        var tabs = document.querySelector('paper-tabs');
        tabs.addEventListener('core-select', function() {
          list.show = tabs.selected;
        }) 
      } 
    });
  </script>
</polymer-element>

Código Index.html (sin estilo):

<!doctype html>
<html>

<head>
  <title>unquote</title>
  <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes">
  <script src="../components/platform-dev/platform.js"></script>
  <link rel="import" href="../components/font-roboto/roboto.html">
  <link rel="import"
    href="../components/core-header-panel/core-header-panel.html">
  <link rel="import"
    href="../components/core-toolbar/core-toolbar.html">
  <link rel="import" href="tab-list.html">
  <link rel="import" href="post-list.html">
</head>

<body unresolved touch-action="auto">
  <core-header-panel>
    <core-toolbar>
      <tab-list></tab-list>
    </core-toolbar>
    <div class="container" layout vertical center>
      <post-list show="all"></post-list>
    </div>
  </core-header-panel>

  <script>

  var list = document.querySelector('post-list');

  </script>
</body>

</html>

Pero

querySelector('paper-tabs') = *null*

He intentado colocar el eventListener en index.html pero tengo el mismo problema. ¿Alguien puede decirme dónde está el problema?

¡Muchas gracias!


Answer #1
      <template is="dom-repeat" items="{{dataobject}}">
        <div on-tap="_showdetail">
          <iron-collapse id="collapse">??</iron-collapse>
        </div>
      </template>

Y para alternar los elementos de colapso de hierro dentro de la repetición de domino que uso

 _showdetail: function(e){
    Polymer.dom(e.currentTarget).querySelector('#collapse').toggle();
},

Answer #2
document.querySelector('paper-tabs');

no encuentra el elemento de pestañas de papel , porque está oculto dentro del DOM de sombra del elemento de lista de pestañas .

Simplemente puede asignar una identificación a las pestañas de papel , por ejemplo, pestañas , y acceder a ella de esta manera

this.$.tabs

(Consulte http://www.polymer-project.org/docs/polymer/polymer.html#automatic-node-finding ).

También existe la opción de acceder directamente al DOM de la sombra.

this.shadowRoot.querySelector('paper-tabs');

Si solo desea escuchar los cambios en la selección de pestañas de papel , puede usar un observador de cambios:

<paper-tabs selected="{{currentTab}}">

Polymer('tab-list', {
  currentTab: 'all',
  currentTabChanged: function() {
    console.log(this.currentTab);
  }
});

(Consulte http://www.polymer-project.org/docs/polymer/polymer.html#change-watchers )





shadow-dom