2017-02-28 14 views
1

我是Angular js的新手,想设置全局变量,我可以在不同的服务上使用它作为webservice url。Angular js:如何在不改变它的情况下在其他服务中使用常量值

我已经实现app.js(模块)是这样的:

var app; 
(function() { 
    app = angular.module("ANG", []); 

    app.value('user', { 
     urlBase: '' 
    }); 
})(); 

当我想用这个常数的值我只是在服务认定中的定义,并使用它,但我想存储的细节所以不需要一次又一次地设定值。

实施例:

当我在系统登录我返回一些数据和与它webserviceurl和予设定该URL在value.urlBase在登录控制器。

但是,当我去不同的服务,并希望使用它将值设回''。

代码中使用常量:

app.service('servicename', ["$http", "$q", 'user', function ($http, $q, user) { 
//access the user here but it gives value ''. 
console.log(user.urlBase); 
} 

我怎么可以存储在一次一次又一次地使用它吗?

回答

1

实际上,你可以使用一个“常量”文件,像这样:

export default angular 
    .module('my.module', []) 
    .constant('someConstant', Object.freeze({ 
    foo: 1, 
    bar: 2 
    }) 
    .name; 

我们使用Object.freeze()在我们的,但是你可以使用immutable.js或类似的东西,以防止突变。

+0

我想在登录时设置foo值,并且想要在每个服务登录后使用它,这是可能的吗?因为当我在任何服务中使用它时,我在模块中初始化的值会再次初始化,并且我想获得在登录时初始化的旧值。 –

+0

我如何在服务和控制器中使用它? –

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 。服务通常是单身人士,所以它应该在其他服务之间保留用户。

UPDATE:

当你需要保留页面刷新之间的细节,一个cookie是个不错的解决方案。在你的loginService中,你设置了cookie值,并在你的其他服务中,从cookie中读取。这是使用在角的$饼干服务(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有这样做并保持状态的一个例子:

How do I store data in local storage using Angularjs?

+0

我已经做了它,但它再次用空白值初始化。 –

+1

您应该在成功登录时设置urlBase ** userService.user.urlBase =“您的url”**,您可以在任何具有添加依赖关系userService的地方使用它。 –

+0

@AnkitBadiya没有每次当我尝试使用它,它再次初始化,我在urlBase中获得空白值。 –

0
You can use constant files like this. 

app = angular.module("ANG", []); 
app.constant('user', { 
    urlBase: { 
      'url':'what ever the URL is' 
    } 
}); 
相关问题