我试图在包含用户名的应用程序中保存变量,我有一个登录页面(指令),我在其中获取用户名。我试过了:
提供商:它保存我的变量,但我只能在应用加载之前更改,我需要在控制器内部更改变量。
.provider('username',function(){
var username = 'Default';
return {
setName: function(value) {
username = value;
},
$get: function() {
return {
name: username
}
}
}
服务它运作正常,但如果我刷新页面,我会丢失变量。
.service('username', function () {
var username;
this.setName = function (value) {
username = value;
}
this.name = function () {
return username;
}
})
有人可以告诉我最佳方法是什么?我挣扎了好几个小时想出点什么......
答案 0 :(得分:1)
答案 1 :(得分:0)
我通常使用工厂,看起来很完美,但就像你说刷新页面时丢失了所有数据一样。
此行为与Angular of Factory对象无关,而与 Javascript和浏览器无关。您需要将此值保存在存储对象中(cookies,sessionStorage,localStorage,如果您从未使用过此链接,请输入以下链接:Difference between Session Storage, Local Storage and Cookies in AngularJS)。
在您的情况下,在this.setName
中,您将其存储在let {'1}}中,在初始化工厂时,您只需检查此值是否存在。
sessionStorage
(这段代码可能不完美,比如值不存在可能会有一个专门的场景,但在你的情况下让你对如何使用它很好) < / p>