在我的本地路线http://localhost:9000/#/deviceDetail/中,我有一个管理该视图的控制器。在转到该视图之前,我将一些变量设置为public static void main(String[] args) {
System.out.println("WELCOME TO OUR BANK!\n\n");
List<BankAccount> bankAccounts = new ArrayList<BankAccount>();
ReaderWriter rw = new ReaderWriter(bankAccounts);
}
(,例如$rootScope
)。
在该视图上,我可以访问仪表板属性,但是当我使用$rootScope.dashboards
键刷新页面时,属性仪表板将丢失。
我尝试将F5
保存在localStorage变量上但是我使用$rootScope
方法得到了循环引用问题。
有任何提示要管理吗?
答案 0 :(得分:10)
AngularJS是一个JavaScript框架,所有内容都存储在内存堆中,当您打开一个页面并且在关闭它之后它就被破坏了。在这种情况下,浏览器刷新就像关闭并重新打开页面一样。
要在刷新后保留该值,您应该将其存储在Cookie中,为此,您可以使用M K建议的$cookies
或sessionStorage / localStorage。
答案 1 :(得分:3)
我试图在Getting started with AngularJS and ASP.NET MVC - The long awaited Part Three的文章之后使用Cookie存储身份验证令牌。但每当我点击F5或刷新Chrome浏览器时,cookie就会被销毁。
那篇文章说ngCookies有助于处理页面刷新以维护页面刷新的令牌。而且我以为它确实如此,我不知道ngCookies杀了我。如果页面刷新它被破坏了!在网上研究了几个小时后,我看到这篇文章对我很有帮助。
根据M K,我使用localStorage(或sessionStorage)帮助我摆脱了令人头疼的问题。 使用Cookie存储身份验证令牌或其他内容是个坏主意。我遇到了这个问题而且我迷路了(不知道来自&#34;使用cookies&#34;的bug)正如上面提到/确认的那样。所以,这篇文章中有一个错误。
万分感谢你,M K。
答案 2 :(得分:0)
使用localStorage和$ stateChangerStart检查是否使用ui.route 像这样的东西
$rootScope.$on('$stateChangeStart', function(event, toState) {
// Grab the user from local storage and parse it to an object
var user = JSON.parse(localStorage.getItem('user'));
if(user) {
$rootScope.currentUser = user;
}
});