javascript - 存储在 Angular 服务上的数据似乎不是持久的

标签 javascript angularjs

我正在尝试使用 ng-show 通过显示或隐藏适当的 div 标签来设置页面导航

我设法让它工作,但后来意识到我不知道如何从其他 Controller 触发“pageChange()”。

经过一番谷歌搜索后,我了解了服务。

所以,我现在有一个存储页面变量的服务,该变量可以由其他 Controller 更改。

问题是它似乎正在将自身重置为我用来初始化它的任何内容。我不确定为什么或如何解决它。

服务:

app.service('navigationService', function() {
    var pa = this; //pa for parent
    this.page;

    this.changePage = function(p){
        //p is the new page
        pa.page = p
        console.log(pa.page);

    };
});

导航 Controller :

app.controller("navCon", ["$scope", "navigationService", function($scope, navigationService){
    var conNav = this;
    this.page = navigationService.page;  
    navigationService.changePage("login"); //initialising the service page variable as "login" also does not work

    this.digest = function(){//display something whenever a digest cycle is run

        console.log(conNav.page);
    }
}]);

当我运行页面时,日志如下所示:

login
undefined
undefined
undefined

不确定它是否相关,但这是页面显示/隐藏的位置以及调用“摘要”函数的位置:

<div class="container-fluid" ng-show="{{nav.page == 'home'}}">
    <div class="row" ng-class="{'go':nav.digest()}"><!--go is not really a class but this is the only way i know how to trigger a function with every digest-->

我对 Angular 相当陌生,不知道我哪里出了问题,所以如果有人能明白为什么它的页面在第一个日志后变成“未定义”,请让我知道如何修复。

提前致谢

最佳答案

我希望您在这里使用 Controller 作为语法,就像您使用 this 访问 Controller 实例

您的情况的问题是您正在访问

navigationService.page

在使用

设置之前
navigationService.changePage("login")

所以先调用服务方法,然后访问服务属性。

关于javascript - 存储在 Angular 服务上的数据似乎不是持久的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34224476/

相关文章:

javascript - navigator.mediaDevices.getUserMedia 是否适用于混合应用程序?

javascript - OpenLayers : 4326 ol. proj.transform 不起作用

javascript - 以编程方式 react 设置组件 Prop

c# - 从 SQL 服务器数据库创建 JSON 结果

angularjs - 如何设置 Angular 模态自定义高度和宽度

angularjs - 在angularjs中克隆HTML元素

javascript - 如何在 javascript 中使用嵌套对象展平对象

javascript - 无法将第二个变量传递给隔离范围 AngularJS

html - 不同指令的 Angular 变化css

javascript - AngularJS 与 ui-router,状态变得困惑