【问题标题】:Calling Multiple Controller from a single controller从单个控制器调用多个控制器
【发布时间】:2014-04-29 09:19:21
【问题描述】:

我有一个页面,页眉和页脚部分是通用的,而视图部分是不同的。

我为index.html页面编写的代码是:

<html lang="en" data-ng-app="dashboard">

<head>  
 <!-- All the Libraries & css--> 
</head>

<body>
<header>  </header>

<data-ng-view>  </data-ng-view>

<footer>   </footer>

</body>
</html>

对于data-ng-view,在首页我有3个divs,每个div都有自己的控制器。

主控制器是这样的:

var app = angular.module('dashboard', ['ngRoute'])
    .config(['$routeProvider', function($routeProvider) {
      $routeProvider.
      when('/records', 
              {
                templateUrl: 'view/homepage.html', 
                controller: 'RecordsController'
                }
      ). otherwise({redirectTo: '/records'});  
  }]);

这是homepage.html的结构

<div id='main'>
    <article>           
        <div ng-controller="FlipDemoCtrl"> 
            <!-- contents to display -->
            </div>
    </article>
    <nav>
        <div ng-controller="HomePageLinks">  
            <!--  contents to display -->
            </div>
        <hr>
        <ul ng-controller="ResolveProblem">
        <!-- list of contents through ng-repeat -->             
        </ul>
        <hr>
    </nav>
</div>

我的问题是:

我应该如何定义RecordsController,以便通过这个控制器我能够调用FlipDemoCtrlResolveProblemHomePageLinks控制器。

function RecordsController($scope, $http) {

 // How should I write this function to call the multiple controllers

}

【问题讨论】:

  • 有几种方法可以实现这个目标:事件广播、uber-controller、common shared service。在你的情况下,我可能会使用这三个中的最后一个。
  • @arturgrzesiak:好的。请提供任何有用的链接来创建服务或更好地为我提供服务的语法。
  • @VaibhavJain :查看此链接,您可以将事件从父母广播到孩子。 stackoverflow.com/questions/19038778/…

标签: angularjs controller


【解决方案1】:

使用服务在控制器之间共享通用逻辑。然后将服务注入四个控制器,就可以访问公共数据了。

【讨论】:

  • 是否只适用于普通数据?在我的情况下,所有三个控制器都有不同的数据。除了服务还有其他方法可以调用控制器吗?如果否,请您为我的案例提供某种语法。
猜你喜欢
  • 2014-10-08
  • 1970-01-01
  • 2015-09-07
  • 1970-01-01
  • 2016-04-30
  • 1970-01-01
  • 1970-01-01
  • 2017-10-14
相关资源
最近更新 更多