角度单页面应用程序,如何处理用户离开页面然后按回?

时间:2013-05-09 06:36:35

标签: angularjs

我有一个单页角度应用程序,其中包含指向pdf的链接。当用户点击它们时,它们会填满屏幕,如果他们按下,则角度应用程序会重新启动而不是恢复它所用的位置。

我正在尝试的是在卸载SPA之前使用window.onbeforeunload将我的控制器中的数据存储在浏览器本地存储中,然后在按下后退按钮时捕获路径时恢复数据。

我遇到的问题是如果我的应用程序打开时浏览器上有多个标签,那么他们都认为他们需要从本地存储中恢复数据。

有没有更好的方法来处理用户转到另一个网址然后按回? 我应该尝试捕获浏览器后退按钮事件,看看我是否应该从本地存储重新加载数据?

2 个答案:

答案 0 :(得分:0)

为什么没有单独的URL来打开pdf。

您可以设置Pdf控制器,例如具有openPDf函数(url,$ location)并将$ location设置为pdf url。

答案 1 :(得分:0)

大多数情况下,页面的“状态”可以保存在 url 参数中。这也会使您的网页可收藏

例如,如果您有pdf列表的搜索框,只需将查询嵌入url / route参数中:

#/pdfs?query=abc

然后,当用户从书签或使用后退按钮加载该URL时,您将能够恢复过滤器。

您可以使用$location.search()在状态发生变化时保存状态,然后在控制器加载时将其读回。

.controller('PdfsCtrl', function($scope, $location) {
    $scope.query = $location.search().query;
    $scope.$watch('query', function(value, old) {
        $location.search('query', value);
    });
});