2014-10-31 21 views
1
  • 我有两个单独的页面控制器,然后分配第一个控制器中的服务数据。该服务数据I可以由第二控制器(另一页)使用,但如果刷新页面(第二控制器页),该服务数据显示为未定义服务数据不应删除,同时使用angularjs刷新页面

    // 控制器1

    app.controller("pageCtrl",['$scope','pojo' , function($scope,pojo) 
    { 
    
        pojo.setpgeCtrlScope($scope); 
    
    } 
    ]); 
    

    // 控制器2

    app.controller("pageCtrl2",['$scope','pojo' , function($scope,pojo) 
    { 
    
    pojo.getpgeCtrlScope(); 
    
    } 
    ]); 
    

    // POJO服务

    app.service("pojo",function() 
    { 
        var page1Data; 
        this.setpgeCtrlScope = function(data) 
        { 
        page1Data = data; 
        } 
        this.setpgeCtrlScope = function() 
        { 
        return page1Data; 
        }; 
    }); 
    

请给出上述问题的建议。任何其他方式将数据传递给第二个控制器。并且不应该在刷新页面时移除

 Thank you !! 
+0

这是什么意思的页面刷新,显示前后的网址 – Saqueib 2014-10-31 15:03:20

回答

1

该数据在内存中。如果刷新页面,您将会丢失它。

你可以使用一些方法,如在服务中存储在缓存中,本地存储等

的数据。例如:

app.service("pojo", function() { 
    var page1Data = getSavedData(); //A method to retrieve the data from a cache or storage 
    this.setpgeCtrlScope = function(data) { 
     page1Data = data; 
     saveData(page1Data); //A method to save the data to the cache or storage 
    } 
    this.getpgeCtrlScope = function() { 
     return page1Data; 
    }; 
}); 

这样每次服务被加载(后页面刷新)它将检索先前保存的数据。

关于存储,有很多选择。这一个真的很容易使用:
HTML5 Local Storate

有这么多的解决方案和实现。我只给你一个例子来指导你。

+0

谢谢denisazevedo,我还有一个疑问。如果清除缓存,它会工作。 ..?我的意思是localstorage会起作用吗? – 2014-12-08 06:51:48

+0

这取决于。 [Chrome像_cache_](https://developers.google.com/web-toolkit/doc/latest/DevGuideHtml5Storage)和[Mozilla like _cookies_](https://developer.mozilla.org/en/DOM/Storage) )。因此,例如,如果您在Chrome中清除缓存,则应清除本地存储。这也是一个很好的阅读:[John Resig的博客的DOM存储](http://ejohn.org/blog/dom-storage/) – denisazevedo 2014-12-09 04:20:06

+0

好的,谢谢denisazevedo – 2015-01-13 05:02:29