我正在尝试这样做:
我有form-group
:
<div class="form-group">
<input type="search" ng-model="search"/>
</div>
隐藏另一个form-group
时必须隐藏form-group
,但是,第一个form-group
来自另一个控制器
<div class="form-group" ng-controller="LogoutCtrl" ng-show="displayLogout">
<button type="button">Account Figures</button>
</div>
所以我要说的是,我需要的是ng-show=displayLogout
开始工作后,必须对第一个form-group
生效。
问题是,第一个form-group
来自名为LinesCtrl
的控制器,而第二个来自LogoutCtrl
,如上所示,但这两个元素属于同一个{{} 1}}
答案 0 :(得分:1)
正如评论中所建议的那样,您可以在共同的祖先控制器上发布变量displayLogout
。
例如:
<div ng-controller="ParentCtrl">
<div ng-controller="LogoutCtrl" ng-show="displayLogout">
</div>
<div ng-controller="SearchCtrl">
<div class="form-group" ng-show="displayLogout">
...
</div>
</div>
</div>
在ParentCtrl
控制器中,设置:
.controller("ParentCtrl", function($scope){
// ...
$scope.displayLogout = user.isLoggedIn; // whatever you have there
}
答案 1 :(得分:1)
在父控制器中使用'loggedIn'bool将解决您的问题。如果您需要在应用程序的其他位置使用该bool,则会出现问题。我通常将loggedin bool放在一个处理登录和注销请求的auth服务中。一旦登录或注销事件完成并且已检索到所有应用程序必需数据,此服务就会发送广播。每个控制器/服务/指令都会侦听这些事件并按需要处理它们。
由于身份验证在大多数应用程序中全局使用,因此适合使用Angulars事件。