在 AngularUI 路由器中保留父状态

Retain parent state in AngularUI Router

本文关键字:状态 保留 AngularUI 路由器      更新时间:2023-09-26

我正在使用AngularJS开发一个应用程序,该应用程序有一个电话簿。状态page.phonebook包含一个包含用户和公司的列表以及一个包含筛选器的表单。数据通过 ngResource 从后端加载。如果我点击某个用户,我就会进入用户详细信息页面。当我现在返回浏览器(退格键)时,我将返回到电话簿列表,但有一个新的$scope.这意味着我丢失了所有过滤器、数据等的旧状态。

我想问题是我在page视图中加载状态page.phonebook.user,它替换了page.phonebook状态。

但是,是否有可能以某种方式保留旧状态?这包括滚动位置、过滤器值和来自服务器的数据。

这是我的状态配置:

$stateProvider
.state('page', {
    abstract: true,
    controller: 'PageController',
    templateUrl: 'app/templates/page.html',
})
.state('page.phonebook', {
    url: "^/phonebook",
    templateUrl: 'app/templates/page.phonebook.html',
    controller: 'PhonebookController'
})
.state('page.phonebook.user', {
    url: "^/user/:userId",
    views: {
        '@page': {
            controller: 'UserController',
            templateUrl: 'app/templates/page.user.html'
        }
    }
});

你可以很好地维护状态。您需要将过滤器和滚动位置作为状态参数或服务的一部分进行保留。在页面之间导航后,您可以将其检索回来。