2017-02-28 5 views
1

저는 Angular j를 처음 사용하고 webservice url과 같이 다른 서비스에서 사용할 수있는 전역 변수를 설정하려고합니다.각도 js : 다른 서비스에서 상수 값을 변경하지 않고 사용하는 방법

내가 구현 한 app.js이 같은 (모듈) :

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

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

나는이 난 그냥 서비스 해상력에서 정의하고 사용할 값을 상수 사용하고자하지만 난에 상세 정보를 저장할 따라서 값을 반복해서 설정할 필요가 없습니다.

예 : I가 시스템에 로그인하면

나는 그것으로 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); 
} 

가 어떻게 한 번에 저장할 수있는 다시 다시를 사용

코드는 상수 값을 사용 하는가?

답변

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 전달, 즉 속성으로 접근, 또는 게터 통해 검색 중 하나 인 사용자 개체가 포함되어 당신이 urlBase을 설정 한 다음

app.factory('userService', function() { 

    var user = { 
     urlBase: '' 
    }; 

    return { 
     user: user 
    }; 
}; 

app.service('servicename', ['userService', function (userService) { 
    console.log(userService.user.urlBase); 
}]); 

을, 당신은 또한 userService을 전달하는 . 서비스는 일반적으로 싱글 톤이므로 다른 서비스간에 사용자를 보존해야합니다.

UPDATE :

이 페이지 새로 고침 사이의 세부 사항을 유지하기 위해 필요에 따라, 쿠키 나쁜 해결책이 아니다. loginService에서 쿠키 값을 설정하고 다른 서비스에서는 쿠키에서 값을 읽습니다. 이것은 각도에서 $ 쿠키 서비스 (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

successl login ** userService.user.urlBase = "url"**에 urlBase를 설정해야하며 add dependency userService가있는 곳에서이 URL을 사용할 수 있습니다. –

+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' 
    } 
});