当用户点击浏览器后退按钮时,没有获得Angular js中的先前状态数据

时间:2016-01-29 10:25:32

标签: javascript angularjs angular-ui-router angular-ui-router-extras

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

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

例如

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

请帮我解决这个问题..

这可以实现,如果我们在应用过滤器时在状态url中传递一些参数..但是如何实现这个.. ??

任何人都可以指导我吗?

1 个答案:

答案 0 :(得分:0)

您的查询参数是否是网址的一部分?例如,我在应用程序中进行分页和过滤,我的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没有采用状态参数来解释默认值以及壁球的作用。重要的是要注意params是字符串(注意false是" false")。希望这会有所帮助。