我很难在一个页面上使用多个控制器。 我正在使用bootstrap和angular构建一个网站。 我有顶部导航栏(目前作为烧瓶中的索引html),以及我有ng-view的内容div。内容div由angular $ routeProvider启动的控制器填充。在导航栏中,我有一个用户图标和一个“注销”按钮,在其中一个控制器调用API并且用户登录后应该更改。如何在不从后端重定向的情况下执行此操作? 我想我需要用另一个角度控制器渲染导航栏,但是如何在组件之间传递事件?有一些mediator API吗?我找到的唯一“解决方案”是基于ng-switch和ng-include。它似乎过于复杂,在这种情况下,我宁愿使用jinja2继承。任何人都可以在正确的手册中指出如何使用多个视图和路由构建它吗?
答案 0 :(得分:0)
您需要定义service
这是一个将在所有控制器之间共享的单身人士。
var module = angular.module('myapp', []);
module.service('loginService', function() {
return {loggedIn: false}
});
然后在你的控制器中你有这样的代码:
app.controller('SomeController', ['$scope', 'loginService', function($scope, loginService) {
$scope.loginService= loginService;
$scope.$watch('loginService.loggedIn', function(newValue, oldValue) {
// TODO handle login/logout
});
}]);
另一种可能的解决方案是将根范围注入登录服务,并在用户登录或注销时发出事件