2017-02-28 1 views
1

私はAngular jを初めて使用しており、webservice URLとしてさまざまなサービスで使用できるグローバル変数を設定したいと考えています。Angular js:他のサービスの定数値を変更せずに使用する方法

私が実装したapp.jsこのような(モジュール):

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

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

私はこれは私がちょうどサービスdefinationでそれを定義し、それを使用する値を定数使用したいが、私はで詳細を保存したいですそれで、値を何度も何度も設定する必要はありません。

例:私はシステムにログインすると

私はそれで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); 
} 

がどのように私は一度に格納することができますし、何度も何度もそれを使用します。

CODEは一定の値を使用するには?

答えて

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では、クッキーの値を設定し、他のサービスではクッキーから読み取ります。

How do I store data in local storage using Angularjs?

+0

私はすでにそれをしましたが、空白の値で再び初期化します。 –

+1

successl login ** userService.user.urlBase = "your url" **にurlBaseを設定する必要があります。これは、依存関係のあるaddServiceでこれを使用できます。 –

+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' 
    } 
}); 
:これは、別のオプションは、ローカルストレージを使用することであり、これはSOそうと状態を保存する例があり

app.service('loginService', ['$cookie', function ($cookies) { 
    $cookies.put('userUrl', 'http://urlhere'); 
}]); 

app.service('servicename', ['$cookie', function ($cookies) { 
    console.log($cookies.get('userUrl')); 
}]); 

角(https://docs.angularjs.org/api/ngCookies/service/$cookies)で$クッキーのサービスを使用して行われます

関連する問題