我已经写了下面描述的服务
myApp.service('dashboardPath', function(){
var path;
return {
path: path
}
this.path = function(value){
path = value;
}
});
在sessionsCtrl中设置路径的值,如此dashboardPath.path =“student_dashboard”,我可以访问任何控制器中的路径值,例如dashboardPath.path,它返回正确的值,但是如果我重新加载页面,路径的值消失了(它表示“未定义”)。我的上述服务是否正确定义?
答案 0 :(得分:2)
当您刷新页面时,该值将消失,因为应用程序重新加载。您需要的是数据的持久性:
myApp.service('dashboardPath', function(){
var path = JSON.parse(localStorage.getItem('path'));
this.path = function(value){
path = value;
localStorage.setItem("path", path);
};
return {
path: path
}
});
答案 1 :(得分:0)
服务是单个对象,将在您的应用程序期间生效。刷新页面会重新加载所有代码并丢弃旧内存。您的代码工作正常。
如果要在页面刷新之间保留数据,请尝试使用localStorage。
答案 2 :(得分:0)
这段代码看起来很奇怪:
myApp.service('dashboardPath', function(){
var path;
return {
path: path
}
this.path = function(value){
path = value;
}
});
return
运算符调用此类函数,因此不需要 new
个句子。你的代码应该是:
myApp.service('dashboardPath', function(){
var path;
this.path = path;
});
您需要 - 实际存储值。通过将其放在一个变量中,刷新时将重置上下文,您仍然可以得到undefined
。您应该将其存储在以下三个位置之一:
get
和post
值。在任何这样的地方,你需要有一个setter和getter来获取这些值:
this.getPath = function(){ ... };
this.setPath = function(v){ ... };
而不是普通成员变量path
。