代码之家  ›  专栏  ›  技术社区  ›  Varsha

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

  •  0
  • Varsha  · 技术社区  · 10 年前

    我正在开发AngularJ的应用程序。我的问题如下

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

    如。

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

    请帮我解决这个问题。。

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

    有人能指导我吗??

    1 回复  |  直到 10 年前
        1
  •  0
  •   BBauer42    10 年前

    您的查询参数是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 不考虑state-params部分,它解释了默认值和挤压的作用。重要的是要注意参数是字符串(注意false是“false”)。希望这有帮助。

    推荐文章