我已将应用分配到html
标记,如下所示:
<html lang="en" ng-app="pieShopApp">
其路线为/pies
并使用mainCtrl
:
when('/pies', {
templateUrl: 'templates/pie-list.php',
controller: 'mainCtrl'
}).
在mainCtrl
我运行此代码块以检查Firebase中的身份验证更改:
Auth.$onAuth(function(authData) {
//Doesn't work
$scope.authData = authData;
//Works
$rootScope.authData = authData;
});
为另一个处理注销的控制器分配logout
按钮(此代码段假设正在使用$scope
,而不是$rootScope
:
<div id="site-access-features">
<a href="#/pies/register">
<button id="register-btn" class="btn">Register</button>
</a>
<a href="#/pies/login">
<button ng-hide="$parent.authData" <!-- doesn't work when using $scope --> id="login-btn" class="btn">Log in</button>
</a>
<a href="#/pies/login">
<button ng-controller="logoutCtrl" ng-show="$parent.authData" <!-- doesn't work when using $scope -->id="logout-btn" class="btn" ng-click="logout()">Log out</button>
</a>
</div>
现在,在mainCtrl
我必须使用$rootScope
才能访问authData
中的ng-show="authData"
,因为我已经为{{{}}分配了一个新控制器1}}按钮。为什么是这样?我想,因为logout
按钮仍在logout
mainCtrl
内,我可以在标记中使用$scope
来访问{{1} } {&#39; s $parent.authData
但它不起作用。
有人可以为我澄清这个吗?
答案 0 :(得分:1)
只需使用:
"authData"//is on the $rootScope
而不是:
"$parent.authData"
因为你有:
$rootScope.authData = authData;