gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 18:52:41 25 4
gpt4 key购买 nike

我正在尝试使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com