Как выделить выбранный текст routerLink при перезагрузке страницы в Polymer3.x?

Я создаю музыкальное приложение Polymer3, которое извлекает плейлисты из общедоступного API. Все playlistNames реализованы в виде routerLinks.

При нажатии playlistName становится жирным, но при перезагрузке страницы routerLink не выделяется (жирным шрифтом).

Например: если я вхожу localhost:8081/playlist1 в URL, тогда playlist1 должен быть выделен жирным шрифтом при перезагрузке страницы.

Заранее спасибо.

routerLinks не выделены

static get template() {
    return html `

      <app-location route="{{route}}" url-space-regex="^[[rootPath]]">
      </app-location>

      <app-route route="{{route}}" pattern="[[rootPath]]:page" data="{{routeData}}" tail="{{subroute}}">
      </app-route>

      <app-drawer-layout fullbleed="" narrow="{{narrow}}">
        <!-- Drawer content -->
        <app-drawer id="drawer" slot="drawer" swipe-open="[[narrow]]">
          <app-toolbar>Menu</app-toolbar>
          <iron-selector selected="[[page]]" attr-for-selected="name" class="drawer-list" role="navigation">
            <template is="dom-repeat" items="[[playlists]]">
              <a name="[[item.name]]" href="[[rootPath]][[item.name ]]">[[item.name]]</a>
            </template>
          </iron-selector>
        </app-drawer>

    `;
  }

1 ответ

При нажатии playlistName становится жирным, но при перезагрузке страницы routerLink не выделяется (жирным шрифтом).

Это происходит, вероятно, из-за присутствия IronSelectableBehaviour в iron-selector элемент, который я считаю, применяет смелый стиль on-tap, Это также происходит для paper-tabs например.

Таким образом, жирный стиль применяется, потому что вы нажимаете на элемент. Однако, если вы переходите на страницу непосредственно через URL-адрес, вы фактически не щелкаете по элементу, поэтому вы не получаете такое же поведение.

Решение:

У вас всегда будет класс iron-selected на текущий активный элемент, будь то через URL или по нажатию.

Из документации:

железный селектор не стилизован. Использовать iron-selected Класс CSS для стилизации выбранного элемента.

Попробуйте это

  <style>
    .iron-selected {
      background: #eee;
    }
  </style>
Другие вопросы по тегам