我是Angular JS的新手,想设置我可以在不同的服务上用作网络服务URL的全局变量。
我已经实现了app.js(模块):
var app;
(function () {
app = angular.module("ANG", []);
app.value('user', {
urlBase: ''
});
})();
当我想使用此常数值时,我只是在服务限定中定义它并使用它,但我想存储详细信息,以便一次又一次地设置值。
示例:
当我在系统中登录时,我将使用WebServiceUrl返回一些数据,并将该URL设置在login Controller中的value.urlbase中。
但是,当我转到不同的服务并想使用它时,它将值设置为''。
使用常数值的代码:
app.service('servicename', ["$http", "$q", 'user', function ($http, $q, user) {
//access the user here but it gives value ''.
console.log(user.urlBase);
}
我如何一次存储并一次又一次使用它?
您实际上可以使用'常数'文件,例如:
export default angular
.module('my.module', [])
.constant('someConstant', Object.freeze({
foo: 1,
bar: 2
})
.name;
我们在我们的其中使用object.freeze(),但是您可以使用不变的js或类似的东西来防止突变。
我建议您有另一种服务,而不是价值。
将用户服务传递给您的服务,其中包含可作为属性访问的用户对象,或通过getter检索:
app.factory('userService', function() {
var user = {
urlBase: ''
};
return {
user: user
};
};
app.service('servicename', ['userService', function (userService) {
console.log(userService.user.urlBase);
}]);
然后在设置URLBase的位置,您还将通过UserService。服务通常是单例,因此应保留其他服务之间的用户。
更新:
当您需要保留页面刷新之间的详细信息时,cookie并不是一个不好的解决方案。在您的LoginService中,您将cookie值设置为cookie值,在其他服务中,请从cookie中阅读。这是使用Angular(https://docs.angularjs.org/api/ngcookies/service/qukies)中的$ cookies服务完成的
app.service('loginService', ['$cookie', function ($cookies) {
$cookies.put('userUrl', 'http://urlhere');
}]);
app.service('servicename', ['$cookie', function ($cookies) {
console.log($cookies.get('userUrl'));
}]);
另一个选择是使用本地存储,因此有一个这样做并保存状态的示例:
如何使用angularjs将数据存储在本地存储中?
You can use constant files like this.
app = angular.module("ANG", []);
app.constant('user', {
urlBase: {
'url':'what ever the URL is'
}
});