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