2个不同的控制器:在其中一个控制器的动作上隐藏元素
2 different controllers: hiding elements on the action of one of them
我正在尝试这样做:
我有这个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
,如上所述,但这两个元素在同一个navbar
中
正如注释中所建议的,您可以在公共祖先控制器上发布变量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
}
在父控制器中设置"loggedIn"布尔将解决您的问题。如果你需要在应用程序的其他地方使用bool,就会出现问题。我通常将loggedin-bool放在处理登录和注销请求的身份验证服务中。一旦登录或注销事件完全完成,并且检索到所有应用程序必需的数据,此服务就会发送广播。每个控制器/服务/指令都会侦听这些事件,并根据需要进行处理
由于大多数应用程序都在全球范围内使用身份验证,因此它是使用Angulars事件的一个很好的候选者。
相关文章:
- 从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗
- 如何在Angular单元测试中从另一个控制器的rootScope将方法添加到rootScope中
- Javascript/jQuery压缩一个图像正确的评论帖子,并使用Ajax Laravel 5.2保存到控制器中
- 从AngularJS中的另一个文件中的控制器访问服务
- 如何将一个变量从一个控制器传递到合金中的另一个控制器
- 如何从AngularJs中的另一个控制器访问控制器
- 相对于角度控制器中的另一个阵列过滤阵列项目
- 试图将一个局部变量传递给我的ngAside控制器
- SignalR返回到一个客户端,由控制器生成
- angularjs调用事件中控制器的一个函数
- 单击angularjs中的另一个控制器时重新加载控制器
- ASP.NET angularjs重定向到控制器的另一个视图
- $scope$观察数组中的一个特定对象——Angular JS控制器
- 如何在来自另一个文件的控制器中定义变量
- Angularjs - 观察模态窗口从另一个控制器关闭
- 在一个控制器中更新服务变量,并在另一个控制器 - Angular JS中使用更新的值
- AngularJS - 一个文件中的控制器和服务
- AngularJs 从指令中的另一个调用控制器
- 如何使用javascript express node将变量从控制器中的一个方法公开.js到另一个控制器.js
- 每个AngularJS控制器一个脚本标记