防止角度UI路由器重新加载组件

时间:2017-11-29 07:11:01

标签: angularjs angular-ui-router

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

我实现了“websudo”,它类似于Github所做的 - 如果您上次登录很久以前,它会将您带到登录页面。重新登录后,它会将您带回到您所在的页面。问题是您所在的组件不应重新加载(这样您就可以恢复工作)。我已经尝试了以下内容,但在重新登录并重定向到组件的路径后,组件始终会重新加载:

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

是否有可能采用其他方式来实现此功能?

1 个答案:

答案 0 :(得分:0)

如果将所有数据存储在从视图引用的工厂/服务中(注入到控制器中,然后从视图中放入工厂/服务中的范围和引用属性),那么只要页面是页面,数据就会保留。运行

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>

角度$injector将在第一次引用时创建PersistData对象,然后保留对它的引用以获取/注入它(单例)。