简体   繁体   中英

How to pass a scope between two controllers with angular js?

I need to use a scope , that is in a controller, in another controller . So I've used a factory :

app.factory('myservice',function(){
    var mydata=[];
    function set(data){
        mydata=data;
    }

    function get(){
        return mydata;
    }

    return {
        set:set,
        get:get
    }
});

Then In the controller that contains the scope I need I set the data :

myservice.set($scope.value)

In the other controller where I need the scope I get it from the factory :

$scope.value= myservice.get()

This seems to work fine . My problem is that when I refresh the page where I'm using the second controller $scope.value becomes undefined .

How to fix this ??

Data in services does not persist through page refreshes. There is no way around this.

However, you can store the data in cookies or localstorage , then reload that data on page load. Here is some pseudocode:

//Don't forget to add a dependency on ngCookies at the module level!
app.factory('myservice',function($cookies){
    var mydata=[];
    function set(data){
        $cookies.putObject("myData", data);
    }

    function get(){
        return $cookies.getObject("myData");
    }

    return {
        set:set,
        get:get
    }
});

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM