Как "очистить" данные в полимерном компоненте после повторного отображения в браузере

Я хочу добиться следующего с Polymer 2.0:

Ожидаемое поведение: каждый раз, когда я захожу на страницу / просмотр переговоров /{id}, все компоненты ввода (переключатели) должны быть отключены. Реальное поведение: каждый раз, когда я захожу на страницу, переключатели имеют предыдущее заполненное значение, если только я не нажимаю "обновить".

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

В компоненте my-app я использую железные страницы:

 <iron-pages selected="[[page]]" attr-for-selected="name" selected-attribute="visible"
          fallback-selection="view404" role="main">
[..]
          <market-view
            name="market-view"></market-view>
          <negotiating-view
            name="negotiating-view"
            user="{{user}}"
            route={{subroute}}></negotiating-view>
        </iron-pages>

с JS:

_routePageChanged(page) {
// If no page was found in the route data, page will be an empty string.
// Default to 'view1' in that case.
this.page = page || 'home-view'

}

_pageChanged(page) {
// Load page import on demand. Show 404 page if fails
const resolvedPageUrl = this.resolveUrl(page + '.html')
Polymer.importHref(
  resolvedPageUrl,
  null,
  this._showPage404.bind(this),
  true)
}

Как предусмотрено полимером init. Посетить переговорный вид можно, например, через market-view компонент с помощью бумажной кнопки (простой тег привязки имеет тот же результат)

<paper-button raised class="orange-button" on-tap="_negotiation" data-args$="{{item.id}}">Negotiate contract</paper-button>
[..]
_negotiation(e) {
    var apiId = e.target.getAttribute('data-args')
    this.set('route.path', '/negotiating-view/' + apiId)
}

Кроме переговоров - у меня есть следующие переключатели, которые остаются выбранными после первого посещения:

<paper-radio-group selected="{{selectedSubs}}">
  <paper-radio-button name="Basic">Basic</paper-radio-button>
  <paper-radio-button name="Regular">Regular</paper-radio-button>
  <paper-radio-button name="Intensive">Intensive</paper-radio-button>
</paper-radio-group>

То, что я на самом деле хочу, чтобы каждый раз, когда я представлял компонент вида согласования, он очищал строку selectedSubs.

Спасибо за ваше время:)

1 ответ

Решение

Итак, я исправил это:

Вместо использования this.set('route.path', path) используйте:

document.location.assign('/negotiating-view/' + apiId)

Как задокументировано здесь assing()

Загружает новый документ

Слово " новый" спровоцировало меня, чтобы попробовать это, которое решило это!

Другие вопросы по тегам