如何在角度为js的两个控制器之间传递范围?

时间:2015-05-07 19:04:58

标签: javascript angularjs

我需要在另一个控制器中使用控制器中的作用域。所以我用了一家工厂:

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

    function get(){
        return mydata;
    }

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

然后在包含我需要的范围的控制器中,我设置数据:

myservice.set($scope.value)

在我需要范围的另一个控制器中,我从工厂获得它:

$scope.value= myservice.get()

这似乎工作正常。我的问题是当我刷新我正在使用第二个控制器的页面时$scope.value变得未定义

如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

服务中的数据不会通过页面刷新持续存在。没有办法解决这个问题。

但是,您可以将数据存储在cookieslocalstorage中,然后在页面加载时重新加载该数据。这是一些伪代码:

//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
    }
});