Angularjs:为什么页面刷新会破坏$ rootScope的值?

时间:2015-04-24 14:15:54

标签: javascript angularjs cookies local-storage

在我的本地路线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方法得到了循环引用问题。

有任何提示要管理吗?

3 个答案:

答案 0 :(得分:10)

AngularJS是一个JavaScript框架,所有内容都存储在内存堆中,当您打开一个页面并且在关闭它之后它就被破坏了。在这种情况下,浏览器刷新就像关闭并重新打开页面一样。

要在刷新后保留该值,您应该将其存储在Cookie中,为此,您可以使用M K建议的$cookiessessionStorage / 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;

            }
        });