如何在服务中设置和获取值-angularjs
我已经写了一个服务描述如下如何在服务中设置和获取值-angularjs,angularjs,Angularjs,我已经写了一个服务描述如下 myApp.service('dashboardPath', function(){ var path; return { path: path } this.path = function(value){ path = value; } }); 我正在设置会话Ctrl中的path值,如dashboardPath.path=“student_dashboard”,我可以
myApp.service('dashboardPath', function(){
var path;
return {
path: path
}
this.path = function(value){
path = value;
}
});
我正在设置会话Ctrl中的path值,如dashboardPath.path=“student_dashboard”,我可以访问任何控制器中的path值,如dashboardPath.path,返回正确的值,但如果我重新加载页面,则path的值将消失(显示为“未定义”)。我的上述服务定义正确吗?服务是在应用程序期间有效的单例对象。刷新页面将重新加载所有代码并丢弃旧内存。您的代码工作正常
如果要在页面刷新之间保留数据,请尝试使用。刷新页面时,该值将消失,因为应用程序将重新加载。您需要的是数据的持久性:
myApp.service('dashboardPath', function(){
var path = JSON.parse(localStorage.getItem('path'));
this.path = function(value){
path = value;
localStorage.setItem("path", path);
};
return {
path: path
}
});
这段代码看起来很奇怪:
myApp.service('dashboardPath', function(){
var path;
return {
path: path
}
this.path = function(value){
path = value;
}
});
return
语句是不需要的,因为这样的函数是使用new
操作符调用的。yoor代码应为:
myApp.service('dashboardPath', function(){
var path;
this.path = path;
});
。您应该将其存储在以下三个位置之一:
- 服务器端:使用ajax($http)来
获取
和发布
值
- 客户端本地存储-
- 饼干
在任何这样的地方,您都需要为这些值设置setter和getter:
this.getPath = function(){ ... };
this.setPath = function(v){ ... };
而不是普通成员变量path
据我所知,如果你刷新你的页面,这个值没有定义是完全正常的,你需要使用的是你是否再次下载JS来重新加载?如果是这样,则该值未定义是完全正常的。如果你想通过重新加载来保存一些东西,你应该使用浏览器存储。或者更好的是使用本机angular服务,这给我留下了另一个问题。我需要的是,当用户登录时,我会根据某些条件决定仪表板路径。我正在尝试使用服务设置路径,现在我还有一个链接可以将用户带到仪表板,我可以从服务获取路径,并且已经说过在重新加载页面时会清除该值,所以现在当用户单击仪表板链接时,我没有正确的路径。对于这种情况,localStorage是唯一的解决方案吗?或者angularjs提供了其他技术来实现这一点吗?您也可以使用cookies来持久化数据(ng cookies)