1

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

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

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

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

4

2 回答 2

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);
    });
});
于 2013-05-09T08:45:38.503 回答
0

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

例如,您可以设置具有函数 openPDf(url, $location) 的 PdfController 并将 $location 设置为 pdf url。

于 2013-05-09T06:53:46.333 回答