如何防止刷新后表单服务被删除?

Posted

技术标签:

【中文标题】如何防止刷新后表单服务被删除?【英文标题】:How to prevent the being deleted form service after refresh? 【发布时间】:2018-02-16 07:35:39 【问题描述】:

我在 service 中使用 $sessionStorage 以角度存储日期并在另一个页面中获取它。 (我正在使用 SPA)。

我可以在页面内完美获取数据,但是当我刷新页面时,服务中的数据会被删除。

为什么 Angular 会从服务中删除数据?我应该怎么做才能保持 刷新页面后p呢?

谢谢。

【问题讨论】:

您有代码示例吗?似乎您正在刷新您的角度页面,然后丢失了那里的所有数据。 Angular 不应该更改页面(刷新),它应该刷新其中的对象。要显示不同的页面,您应该更改状态(使用您的 stateProvider.ui-router 4 示例)。无论如何,如果您需要在页面之间保留信息,您应该使用 cookie。这是实现在 html 会话之间存储数据的方法。服务用于在数据库中存储数据(与将存储数据的相应服务器端代码通信)。 @AlejandroTeixeiraMuñoz 我没有显示任何代码,因为这是一个普遍的问题,我只是在其中创建了一个对象作为服务中的变量并向其中插入一些值 那么这个变量会丢失,因为你的会话被终止了。 (刷新时)你需要一个 cookie 或一个 db 来实现这一点。 @AlejandroTeixeiraMuñoz 我使用 $sessionStorage 而不是 cookie,谢谢 如果使用 cookie 没问题 4u 我可以写一个解决方案 【参考方案1】:

基本上当页面被刷新、角度重新加载、服务重新加载并且所有数据都丢失时,这是 javascript 的正常行为。

这就像你基本上是从头开始一样。您需要的是一种在重新加载时持久保存数据的方法,并且您可以使用诸如本地存储之类的东西来持久保存和检索数据。

看看这里的一些例子:

Storing Objects in HTML5 localStorage

【讨论】:

【参考方案2】:

Cookie 解决方案

无论使用 cookie 是不是一个“广泛”的解决方案,它都可以解决您的 没有服务器或数据库的问题。

请注意,如果用户清空临时 Internet 文件,数据将被删除,或者如果 cookie 不是永久的,则数据将在完成日期到来时被删除

首先,您需要将ngCookies 导入到您的 Angular 应用中

bower install angular-cookies --save

之后,记得导入 Angular cookie 脚本:

<script src="path/to/angular.js"></script>
<script src="path/to/angular-cookies.js"></script>

并添加依赖:

angular.module('app', ['ngCookies']);

之后就可以从angular调用ngCookies方法,然后存储和恢复cookie中存储的数据:

angularJS API 示例:

angular.module('cookiesExample', ['ngCookies'])
.controller('ExampleController', ['$cookies', function($cookies) 
  // Retrieving a cookie
  var favoriteCookie = $cookies.get('myFavorite');
  // Setting a cookie
  $cookies.put('myFavorite', 'oatmeal');
]);

希望对你有帮助。

无论如何,IMO,安装带有数据库的服务器端应该是正确的 如果您真的想保存来自用户的信息,请提供解决方案。

【讨论】:

以上是关于如何防止刷新后表单服务被删除?的主要内容,如果未能解决你的问题,请参考以下文章

刷新页面时如何防止表单重新提交(F5 / CTRL+R)

php防止表单重复提交的几种方法

JavaScript 获取发布请求后如何防止页面刷新?

刷新时如何防止重复条目?

如何防止表单的重复提交

如何在表单提交时防止表单在刷新时重新提交