当用户单击浏览器后退按钮时,无法在 Angular js 中获取以前的状态数据

Not getting previous state data in Angular js when user clicks on browser back button

本文关键字:获取 js Angular 数据 状态 浏览器 单击 用户 按钮      更新时间:2023-09-26

我正在开发一个AngularJs应用程序。我的问题如下

我有一个使用复选框和单选按钮使用某些参数的过滤数据。过滤数据后,我已移至另一个状态。当用户单击浏览器上的后退按钮时,我无法获取过滤后的数据。取而代之的是,我得到了一个通用的状态数据。

例如。

我有专业人士列表,

并且根据年龄和性别应用过滤器来获得特定的专业人士,并且在获得过滤器结果后,如果单击任何结果,我将被重定向到一个新的状态,即该专业人士的详细信息视图..现在,如果我单击浏览器的后退按钮,我将获得所有专业人士的列表,但我想要我的过滤列表..

请帮我解决这个问题..

如果我们在应用过滤器时在状态 URL 中传递一些参数,则可以实现这一点。 但是如何实现这一目标..??

任何人都可以指导我吗?

您的查询参数是 URL 的一部分吗?例如,我在应用程序中执行分页和筛选,我的 URL 如下所示:

http://localhost:51923/#/accounts/search?searchText=account&pageSize=25&pageNumber=1&someBool=true&someBool2=false

现在,UI 路由器中映射到此状态的状态如下所示:

.state("accounts.search", {
    url: "/search?searchText&pageSize&pageNumber&someBool&someBool2",
    params: {
        searchText: { value: "", squash: true },
        pageSize: { value: "25", squash: true },
        pageNumber: { value: "1", squash: true },
        someBool: { value: "false", squash: true },
        someBool2: { value: "false", squash: true }
    },
    controller: "accountsController as vm",
    templateUrl: "site/accounts/search/accounts.html",
    data: { pageTitle: "Accounts" },
    resolve: { //...resolve data here... },
    someOtherStuffIfNeeded: { //stuff here} 
    }
})

查看 ui 路由器不采用状态参数的文档部分,其中解释了默认值和 squash 的作用。重要的是要注意参数是字符串(注意 false 是"false")。希望这有帮助。