路由解析+多个控制器组合?

Route resolving + multiple controller combo?

我正在尝试结合 2 个概念,但在使它们协同工作时遇到了问题。

Concept 1: 路由解析。这很容易解释,我只是想像这样解决某些模型:

$routeProvider
  .when("/news", {
    templateUrl: "news.html",
    controller: "newsCtrl",
    resolve: { news: function(Model) { return Model.news.getList(); }

Concept 1:我可以在路由controller: xyz中使用'base controller'的想法,然后在实际视图html中加载'sub' 控制器。例如....

app.js

$routeProvider
  .when("/news/latest", {
    templateUrl: "news-latest.html",
    controller: "newsCtrl"

新闻-latest.html

<div ng-controller="newsLatestCtrl">
...
</div>

这将允许我将常用代码放入 newsCtrl,并将 /news/latest 特定代码放入 newsLatestCtrl

问题是我需要结合这两个概念,但很难做到,因为我不能将局部变量传递给 'sub' 控制器,只能传递给主控制器。

我看到的唯一选项看起来不像是好主意...

  1. 在基础控制器中,将局部变量添加为$scope变量(看起来很脏,尤其是对于大型控制器)
  2. 将其移动到服务中(虽然它与任何服务都没有真正相关...)
  3. ??

当我们不知道 "base controller" 的职责是什么时,很难为您提供帮助。对我来说,你要找的Concept 3如下:

$routeProvider
.when("/news", {
templateUrl: "news.html",
controller: "newsCtrl",
resolve: { news: function(Model) { return Model.news.getList(); })
.when("/news/latest", {
templateUrl: "news.html",
controller: "newsLatestCtrl"},
resolve: { newsLatest: function(Model) { return Model.news.getLatest(); });

module.controller('newsCtrl', function($scope, news) { 
    /* common code you want to share */ 
});

module.controller('newsLatestCtrl', function($scope, newsLatest, $controller) {
   // instantiate your "base controller"
   var ctrl = $controller('newsCtrl', {
       "$scope": $scope,
       "news": newsLatest
   });
   // customize and add special code for latest news
});