我是Angular js的新手,想要设置全局变量,我可以在不同的服务上使用它作为webservice url。
我已经实现了这样的app.js(模块):
var app;
(function () {
app = angular.module("ANG", []);
app.value('user', {
urlBase: ''
});
})();
当我想使用这个常量值时,我只是在服务定义中定义它并使用它但我想存储细节,所以不需要一次又一次地设置值。
示例:
当我在系统中登录时,我使用webserviceurl返回一些数据,然后在登录控制器的value.urlBase中设置该URL。
但是当我转到不同的服务并希望使用它时,它会将值设置回''。
使用常量值的代码:
app.service('servicename', ["$http", "$q", 'user', function ($http, $q, user) {
//access the user here but it gives value ''.
console.log(user.urlBase);
}
如何立即存储并反复使用?
答案 0 :(得分:1)
你实际上可以使用'常数'文件,如:
export default angular
.module('my.module', [])
.constant('someConstant', Object.freeze({
foo: 1,
bar: 2
})
.name;
我们在我们中使用Object.freeze(),但您可以使用immutable.js或类似的东西来防止变异。
答案 1 :(得分:1)
我建议你有另一项服务,而不是价值。
将userService传递给您的服务,该服务包含可作为属性访问或通过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中读取。这是使用Angular中的$ cookies服务(https://docs.angularjs.org/api/ngCookies/service/$cookies)
完成的app.service('loginService', ['$cookie', function ($cookies) {
$cookies.put('userUrl', 'http://urlhere');
}]);
app.service('servicename', ['$cookie', function ($cookies) {
console.log($cookies.get('userUrl'));
}]);
另一个选择是使用本地存储,这个SO有一个这样做并保留状态的例子:
答案 2 :(得分:0)
You can use constant files like this.
app = angular.module("ANG", []);
app.constant('user', {
urlBase: {
'url':'what ever the URL is'
}
});