首页 > 解决方案 > 在浏览器中重新显示后如何“清理”聚合物组件中的数据

问题描述

我想用 Polymer 2.0 实现以下目标:

预期行为:每次我访问页面 /negotiating-view/{id} 时,所有输入组件(单选按钮)都将被取消选中。 实际行为:每次我访问页面时,单选按钮都会有以前填写的值,除非我按“刷新”。

我最初的想法是通过构造函数或 ready 方法清除单选按钮。但是,只有在我第一次访问该页面时才能使用这些方法。所以对我来说,它看起来像是一次渲染组件并保留任何值。

我的应用程序组件中,我使用铁页:

 <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

谢谢你的时间 :)

标签: javascriptdata-bindingroutingpolymeriron-pages

解决方案


所以我修复了它:

而不是使用 this.set('route.path', path) 使用:

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

正如这里所记录的assing()

加载新文档

new这个词让我尝试了这个,它解决了它!


推荐阅读