阻止 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 它(单例)的任何其他调用。
我正在使用 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 它(单例)的任何其他调用。