2017-08-08 5 views
1

私のindex.htmlには、このようになりますangularjs .htmlファイル。範囲は

externalCtrlではlocalStorage(成功したログインユーザーの後にそこに保存されています)の値を取得しています。現在の場合は_authentication.isAuth = trueです。 。私はNG-IF = "_ authentication.isAuth" のは、ユーザーとNG-IF = "!_ authentication.isAuth" に記録されていないためにログインして自分のページを開発することができます

マイexternalCtrlコードは次のとおりです。正しく動作この時点にconsole.logで

'use strict'; 
app.controller('ExternalCtrl', ['$scope', 'localStorageService', 
function($scope, localStorageService) { 

    var _authentication = {}; 

    var _authentication = { 
     isAuth: false 
    }; 

    var authData = localStorageService.get('authorization'); 
    if(authData) { 

      _authentication.isAuth = true; 
      console.log(_authentication.isAuth); 

    } 

} 
]); 

と明らかにその偽の場合、それは真か偽である場合はtrueをログに記録します。

その後、前述のように、header.htrlのコントローラーであるheaderCtrlにその変数へのアクセス権があるかどうかをチェックしたいと思います。だから、このコントローラでは、私は行を追加します。なぜ

ReferenceError: _authentication is not defined

  1. console.log(_authentication.isAuth); 
    

    次のエラーを引き起こしますか?

  2. これは正しい方法ですか?

答えて

0

コントローラ内に_authenticationが定義されているためです。それは世界中で利用可能ではありません。 $scopeまたは$rootScopeに定義できます。詳細については

function($scope,$rootScope, localStorageService) { 

     $scope._authentication = {}; 

     $scope._authentication = { 
      isAuth: false 
     }; 

     var authData = localStorageService.get('authorization'); 
     if(authData) { 

       $scope._authentication.isAuth = true; 
       console.log($scope._authentication.isAuth); 

     } 

    } 
    ]); 

AngularJS access parent scope from child controller

+0

だから、ネストされたコントローラに私が外部コントローラで定義された変数へのアクセス権を持っていけませんか?私は持っていると思った。 – BT101

+0

いいえ、あなたは親コントローラ内でvarを使っています。 $ scopeまたは$ rootScopeに変数を定義する必要があります。 $ scopeを使用している場合は、子コントローラビューで{{$ parent.val}}を出力する必要があります。 – Vivz