如何防止在聚合物重载时重置js变量?

时间:2017-07-12 06:56:02

标签: javascript polymer polymer-1.0 predix

我正在尝试使用predix在聚合物上构建一个简单的应用程序,我面临的问题是:    当页面重新加载时,变量返回到它们的初始状态,我使用这些变量来显示/隐藏导航到其他页面(.html文件)的内容。我有一个主要的.html文件,其中声明变量并具有到所有文件的路由。

问题:

  1. 有什么方法可以防止这种情况发生?

  2. 我如何更好地做到这一点,因为我计划构建另一个更大更复杂的应用程序,这需要用户登录和退出?

2 个答案:

答案 0 :(得分:2)

您需要存储在客户端上的任何信息都应写在​​localStorage中。我个人更喜欢使用redux将我的状态存储在localStorage中。有了这个,我的用户可以继续在他们停止的地方工作。 身份验证是实现像Auth0提供的刷新令牌机制所需的其他内容。

答案 1 :(得分:-1)

首先,为什么需要重新加载页面,或者您是否询问用户是否可能重新加载页面?使用聚合物,它是一个单一的视图应用程序,页面永远不会重新加载,而是在当前页面内切换内容。

那就是说,并且因为你要求替代方案,你也可以使用你的路由器推送到window.history并在那里存储更新的变量。

window.history.pushState({'navigate': true, 'url': url, 'extra': extra}, 'FSport', url);

window.history.replaceState({'navigate': true, 'url': url, 'extra': extra}, 'FSport', url);

我不知道当前路由器在Polymer中是如何工作的,因为我们必须编写自己的路由器,因为当我们开始使用Polymer时,该元素不存在。

如果您决定使用localStorage中的保存,还要记住使用localforage获得了对象的indexDb。即使它比localStorage慢,你也可以获得处理promises(异步数据获取)的好处。