2016-03-25 9 views
0

私は自分のアプリ全体にグローバルを設定しようとしています。しかし、それは動作していません。ここで私はグローバルを宣言します:AngularJsがグローバルに設定されています

(function() { 
    angular.module('employeeApp') 
     .controller('authenticationController', authenticationController) 
     .constant('GLOBALS', { 
      url:'http://skindustries.dev/api/v1/', 
      role:'', 
      companyid:'', 
      name:'' 
     }); 

次に従業員がサインインするときにグローバルを設定します。

function authenticationController(requestFactory,authenticationFactory,GLOBALS,$location,$cookieStore) 
    { 
    var vm = this; 

     vm.login = function() { 
      data = {"email": vm.email, "password": vm.password}; 
      requestFactory.post(GLOBALS.url + 'login', data) 
       .then(function (response) { 
        console.log(response); 
        GLOBALS.role = response.data.result.Employee.Role; 
        GLOBALS.companyid = response.data.result.Employee.CompanyId; 
        authenticationFactory.setToken(response.data.result.Employee.api_token); 
        $cookieStore.put('employeeid', response.data.result.Employee.EmployeeId); 
        $location.path('/home'); 

       }, function() { 
        console.log('Niet ingelogd!'); 
       }); 
      } 
     } 

I console.log(GLOBALS.role)authenticationControllerの結果はsuperadministratorある場合。その後、ユーザーは自宅にリダイレクトされます。私のhomeControllerに私がconsole.log(GLOBALS.role)の場合。

(function() 
{ 
    angular.module('employeeApp').controller('homeController', homeController); 

    function homeController(employeeFactory,GLOBALS) { 
     console.log(GLOBALS.role); 

結果はnullありますか?

私はここで間違っていますか?

--EDIT--

定数(サービス)

(function() { 
    angular.module('employeeApp') 
     .service('constants',constants); 

    function constants() { 
     this.url = 'http://skindustries.dev/api/v1/'; 
      this.role = 'oldRole', 
      this.companyid = '', 
      this.name = '' 
    } 
})(); 

ログイン(工場)

factory.login = function(email,password) 
     { 
      console.log('login'); 
      data = {"email": email, "password": password}; 
      requestFactory.post(GLOBALS.url + 'login', data) 
       .then(function (response) { 
        constants.role = response.data.result.Employee.Role; 
        constants.companyid = response.data.result.Employee.CompanyId; 
        factory.setToken(response.data.result.Employee.api_token); 
        $cookieStore.put('employeeid', response.data.result.Employee.EmployeeId); 
        $location.path('/home'); 

       }, function() { 
        console.log('Niet ingelogd!'); 
       }); 
     } 

にHomeController

(function() 
{ 
    angular.module('employeeApp').controller('homeController', homeController); 

    function homeController(constants) { 
    console.log(constants.role); 
} 
+0

'homeController'が実行される前に角度定数 "GLOBALS"が "before"として登録されているかどうかをチェックしましたか? – nalinc

+0

はい私はそれをチェックしました! – Jamie

+0

私はあなたにauthを扱うこのブログの記事を見てみることをお勧めします:http://www.jvandemo.com/learn-how-to-make-authentication-in-your-angular-applications-simpler-and-more -consistent/ –

答えて

2

値(定数)は、それがコントローラに注入されるたびに初期化します。したがって、あなたの新しい価値を保持することはないので、古い価値を初期化します。それは、定数をより良く理解するために

Demo Fiddle

.service('GLOBALS', function() { 
     this.url = 'http://skindustries.dev/api/v1/'; 
     this.role = 'oldRole', 
     this.companyid = '', 
     this.name = '' 
    }) 

.controller('MyController', function(GLOBALS, $scope) { 
    console.log(GLOBALS.role); 
    $scope.role = GLOBALS.role; 
    GLOBALS.role = "new role"; 
    console.log(GLOBALS.role); 
}) 

.controller('MyController2', function(GLOBALS, $scope) { 
    console.log(GLOBALS.role); 
    $scope.role = GLOBALS.role; 
}); 

GLOBALオブジェクトに新しい保存された値を保持するように、あなたのアプリケーションにグローバルオブジェクトとしてserviceを使用することができ、あなたの必要性のために

と値はこれを参照しますquestion

これが役に立ちます。

+0

ありがとうございます。しかし、これを試してページをリロードすると、役割はなくなりました。私の編集を見てください。 – Jamie

+0

明らかに、編集されたロールは、セッションまたは外部のデータベースに保存されていないために削除されます。変更したGLOBAL値を保存するには、localStorage(ブラウザ固有)またはデータベースを使用してデータを保存する必要があります。 –

+0

これをクッキーに保存するのは間違いでしょうか? – Jamie

-1

定数はデコレータによって傍受することはできません。つまり、定数の値は決して変更しないでください。

使用値:基本的

angular.module('app', []); 

.value('GLOBALS', 'The Matrix'); 

.controller('MyController', function (GLOBALS) { 
    GLOBALS = "hello"; 
}) 
関連する問題