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

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

我正在开发 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} 
    }
})

查看 documentation for ui router not of the state params 部分,该部分解释了默认值和 squash 的作用。重要的是要注意参数是字符串(注意 false 是 "false")。希望这有帮助。