0

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

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

例如。

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

这个你能帮我吗..

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

有人可以指导我吗?

4

1 回答 1

0

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

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

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

.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 router的文档,不考虑 state params 部分,该部分解释了默认值和 squash 的作用。重要的是要注意参数是字符串(注意 false 是“false”)。希望这可以帮助。

于 2016-01-29T16:39:28.147 回答