【问题标题】:Angular nested views?角度嵌套视图?
【发布时间】:2015-12-08 10:15:33
【问题描述】:

我被困在一个页面上使用多个控制器。 我正在使用引导程序和角度构建一个网站。 我有顶部导航栏(目前用作烧瓶中的索引 html)和一个内容 div,其中我有 ng-view。内容 div 由 angular $routeProvider 启动的控制器填充。在导航栏中,我有一个用户图标和一个“注销”按钮,在其中一个控制器调用 API 并且用户登录后,该按钮应该会发生变化。如果没有来自后端的重定向,我该怎么做? 我想我需要用另一个角度控制器渲染导航栏,但是如何在组件之间传递事件?是否有一些中介 API?我发现的唯一“解决方案”是基于 ng-switch 和 ng-include。这似乎过于复杂,在这种情况下,我宁愿使用 jinja2 继承。谁能指出正确的手册如何使用多个视图和路由来构建它?

【问题讨论】:

  • 使用全局变量是一种方法。
  • ng-view 不支持嵌套视图,您需要使用 ui-router 可能具有多个嵌套状态的 named-view..查看这篇文章以了解 ng-viewui-viewstackoverflow.com/a/27645346/2435473

标签: javascript angularjs twitter-bootstrap-3


【解决方案1】:

您需要定义一个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
   });
}]);

另一种可能的解决方案是将根范围注入登录服务并在用户登录或注销时发出事件

【讨论】:

  • 是的,我也可以自己介绍调解员。我的观点仍然是 - 如何组织控制器/视图。我刚刚测试了ui-router,它甚至不能正确处理url中的斜杠
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-01
  • 2021-07-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多