2017-10-30 16 views
-1

私はデバイスサービスとデバイスコントローラを持っています。まず、コントローラが呼び出されるたびに、setterメソッドを呼び出してブール値を設定します。別のサービスにあるlogout関数が呼び出されたときにその値を変更したいと思います。 マイデバイスサービスログアウト時にサービス内の変数値を変更する

define([], function() { 

    'use strict'; 

    var DeviceService = [ 
     "AuthService", 
     function (AuthService) { 
      var Device_Create = false; 
      return { 

       setUserCreatePermission :function() { 
        if(AuthService.checkForPermission('Device_Create')){ 
         Device_Create = true; 
        } 
       }, 
       getUserCreatePermission : function() { 
        return Device_Create 
       } 
      } 
     }]; 

    return DeviceService; 

}) 

マイデバイスコントローラは、デバイスサービスでセッターメソッドを呼び出すinitメソッドを持っています。スコープ変数を設定しました。それが設定されていれば、そうでなければメソッドを呼び出します。

define([], function() { 
    'use strict'; 

    var DeviceListCtrl = ["$rootScope", "$scope", "DeviceService", 
     function ($rootScope, $scope, DeviceService) { 

      //variables 

      $scope.deviceList_init = true; 
      $scope.Device_Create = false; 

      init(); 

      if(DeviceService.getDeviceCreatePermission()){ 
       $scope.Device_Create = true; 
      } 

      function init() { 
       if($scope.deviceList_init){ 
        DeviceService.setDeviceCreatePermission(); 
       } 
       $scope.deviceList_init = false; 

      } 

     }] 


    return DeviceListCtrl; 
}); 

誰かが私を助けることができますか? TIA。私はこれに新しいです

答えて

0

私はあなたの問題を理解していませんが、コントローラと他のサービスで同じことをするために2つの異なる変数を制御しようとしているようです。

異なるコントローラ間で変数を使用する場合は、サービス/ファクトリで処理する必要があります。

変数がどこかで変更されたことを他のコントローラに通知する場合は、スコープ上にあるかどうかに応じて$ rootまたは$ scope。$ broadcastを使用できます。

関連する問題