0

我正在尝试将模板动态包含到我的 index.html 中。index.html 的一般结构是:

<body>

  <header ng-controller="Main">
    <section>
      <!-- global stuff -->
    </section>
    <section ng-include="moduleName + '/views/menubar.html'">
      <!-- module-based stuff -->
    </section>
  </header>

  <div id="view" ng-view></div>

</body>

示例网址

example.com/<app_name>/index.html#/<module_name>[/method_name]

$scope.moduleName我不知道当路线改变时如何更新。我的麻烦有两个:

  1. 标头的控制器是Main,而不是与视图关联的控制器,所以我不能?$scope.moduleName从视图的控制器更新(因为Main和视图的控制器是同级的)。

  2. Main中,我尝试设置 a $scope.$on('$routeChangeSuccess',…),但显然它没有通知路线更改

我曾考虑为路由更改设置一个 $rootScope.$on 监听器(如SO#15355346中所述)并向下广播给孩子,然后他们重新发送他们的路由,然后向下广播,以便它可以用于主要。但这似乎令人发指。

而且我真的更愿意将标题保留在 ng-view 之外。

编辑我注意到$route.current.scope有一个名为 with 的对象module_name(可能是因为与路由的 module_name 关联的控制器的名称相同)。我想知道我是否能够以某种方式使用该对象的名称……</p>

4

1 回答 1

1

如果没有全貌,就很难说你的代码出了什么问题。你展示的东西在我看来很好。

请查看我创建的这个 plunk以显示执行此操作的能力。请注意,您还可以使用自定义属性扩展路由对象,如下所示moduleName

    $routeProvider.when('/page1', {
        template: 'one',
        controller: 'one',
        moduleName: 'firstModule'
    });
于 2013-05-30T18:41:06.673 回答