Angular UI State Params - 浏览器刷新

问题描述 投票:0回答:1

这可能已经回答了(如果是的话请指出我正确的地方),如果你有任何有效的解决方案,请告诉我。

我正在使用angularjs 1.5.5,angular-ui-router 0.4.2并在刷新浏览器时遇到问题(可能是特定于实现)。

下面是一个示例伪路由代码,它定义状态以及为状态提供数据的内容,然后可以在控制器中使用这些状态。

    myApp.config(function($stateProvider) {
    // An array of state definitions
    var states = [    
     { 
       name: 'checkout', 
       url: '/checkout',
       templateUrl: 'app/checkout/view/checkout.html',
       controller: 'checkoutController'     

     },

     { 
       name: 'confirm-checkout', 
       url: '/confirmcheckout', 
       params: {model: checkoutModel},
       templateUrl: 'app/checkout/view/confirmcheckout.html',
       controller :'checkoutConfirmationController',
       resolve: {
       person: function(people, $stateParams) {
           return someService.someApi($stateParams.model)
       }
     }
   }
  ]

  // Loop over the state definitions and register them
     states.forEach(function(state) {
       $stateProvider.state(state);
     });
  });

如您所见,/ confirmcheckout url取决于stateParams提供的数据。假设我们导航到/ confirmcheckout url(通过路由器,正确显示confirmcheckout.html,并通过someService.someApi调用解析所有数据。此时,如果我刷新浏览器,angularjs将重新初始化javascript模型/服务这意味着,我的stateParams将丢失并且页面confirmcheckout.html将丢失所有数据。如何在这种情况下处理页面刷新。不建议使用会话存储和本地存储https://docs.angularjs.org/guide/security(请参阅使用本地缓存)

以下是从结帐到确认结算的应用程序中的转换过程。

$ state.go('confirmcheckout',{model:someModel});

在坚果shell中,如何为依赖stateparams呈现UI的状态实现浏览器刷新?

javascript angularjs angular-ui-router single-page-application
1个回答
0
投票

您可以在URL中保存使用查询参数。

在我们的例子中

   url: '/confirmcheckout?model', 

https://ui-router.github.io/ng1/docs/latest/classes/params.paramtypes.html#query

© www.soinside.com 2019 - 2024. All rights reserved.