在Angular UI Router中保留父状态

时间:2014-11-27 07:09:48

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

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

我想问题是我在page.phonebook.user视图中加载状态page,这取代了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'
        }
    }
});

1 个答案:

答案 0 :(得分:0)

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