javascript - 如何使用 Angular js在两个 Controller 之间传递范围?

标签 javascript angularjs

我需要使用一个范围,即在一个 Controller 中,在另一个 Controller 中。所以我使用了一个工厂:

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

    function get(){
        return mydata;
    }

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

然后在包含我需要的范围的 Controller 中设置数据:

myservice.set($scope.value)

在我需要范围的另一个 Controller 中,我从工厂获取它:

$scope.value= myservice.get()

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

如何解决这个问题?

最佳答案

服务中的数据不会通过页面刷新而保留。这是没有办法解决的。

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

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

关于javascript - 如何使用 Angular js在两个 Controller 之间传递范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30109625/

相关文章:

javascript - 加载淡入淡出不起作用

javascript - MooTools 1.1 中一段时间​​后淡出或清除 div 元素

javascript - 如何缩短从 moment.js 获取的时区名称列表?

javascript - axios promise 未解决,始终处于待处理状态

javascript - jQuery:将 onClick 绑定(bind)到指向其他页面的所有 anchor ,其中 target=_self

javascript - 将 html 元素定义为必需的输入

javascript - Protractor :如何检查表格/网格是否已填充?

javascript - 在 Angular.js 中模型状态应该存储在哪里

javascript - Angularjs -> ng-click 和 ng-show 显示 div

javascript - Model.function 不是路由器内的函数