如何在浏览器刷新时保持ui-router参数

时间:2016-09-12 18:01:41

标签: javascript angularjs angular-ui-router

我使用ui-sref,它将两个字符串和一个对象作为参数。在正常情况下一切正常,但是当我刷新浏览到对象的页面上的浏览器变为空时。

刷新后,URL中的两个字符串很好。有没有办法让页面刷新后对象在$stateparams中保持不变。我尝试了几个选项,例如$rootscope.$stateparams = $stateparams,我尝试过使用某项服务,但刷新时会被删除。使用本地存储不是一种选择。

.state('edit', {
        url: '/editItem/:id?userId',
        templateUrl: 'app/items/edit.html',
        controller: 'editController',
        controllerAs: 'vm',
        params: { 
            id: "",
            userId: "",
            userObject: null,
        }
})

我真的只需要持续重装的对象。我使用的是UI-router 1.0.0-beta.2

1 个答案:

答案 0 :(得分:-1)

如果您希望每次都使用您所在州的网址参数,则可以使用resolve功能:

.state('edit', {
        url: '/editItem/:id/:userId',
        templateUrl: 'app/items/edit.html',
        controller: 'editController',
        controllerAs: 'vm',
        resolve: {
          testObject: function($stateParams) {
             return {
              id: $stateParams.id,
              userId: $stateParams.userId
             }
          }
        }

    })

现在,您可以将testObject作为依赖关系传递给editController,并且每次解析此路线后,您的控制器中的值都将显示为testObject.id和{{1} }

如果要将对象从一个状态传递到下一个状态,请以编程方式使用testObject.userId

$state.go

唯一的另一个选择是缓存,通过Localstorage或cookies