阻止 angular UI 路由器重新加载组件

Prevent angular UI router from re-loading component

我正在使用 angular 1.5.11 和 angular-ui-router 1.0.0-beta.3。

我已经实现了 "websudo",它与 Github 的功能类似——如果您上次登录是在很久以前,它会将您带到登录页面。重新登录后,它会将您带回到您所在的页面。要注意的是,您所在的组件不应重新加载(这样您就可以继续工作)。我尝试了以下方法,但组件总是在重新登录并被重定向到组件的路由后重新加载:

$state.go('component.route', {}, {reload: false, notify: false});

是否有其他方法可以实现此功能?

如果您将所有从视图引用的数据存储在 factories/services 中(注入控制器,然后在视图的 factory/service 中设置作用域和引用属性),那么数据将被持久化只要页面是 运行.

JS

angular.module('myMod',[])
  .service('PersistData', function(){
    return {}
  })
  .controller('MyCtrl', function(PersistData){ this.PersistData = PersistData})

HTML

<div ng-app="myMod" ng-controller="MyCtrl as myCtrl">
  <input type="text" ng-model="myCtrl.PersistData.first_name"/>
</div>

angular $injector 将在第一次引用 PersistData 对象时创建它,然后保留对它的引用以供对 get/inject 它(单例)的任何其他调用。