我试图动态地将模板包含到我的index.html中。的index.html的一般结构为:AngularJS基于路线动态设置ngInclude的参数
<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>
样品URL
example.com/<app_name>/index.html#/<module_name>[/method_name]
我无法弄清楚如何更新$scope.moduleName
路由变化时。我的问题是双重的:
头的控制器主要,而不是与视图相关的控制器,所以我不能?更新
$scope.moduleName
从视图的控制器(因为主和视图的控制器是兄弟姐妹)。在主,我试过设置一个
$scope.$on('$routeChangeSuccess',…)
,但显然是it is not notified of route changes。
我想建立一个$ rootScope的。$监听者(如SO#15355346描述)的路径变化和广播到孩子,谁再发射备份他们的路线,这是广播回落所以它是可用的主。但这似乎很令人讨厌。
而且我真的更喜欢将头保持在ng-view之外。
编辑我注意到$route.current.scope
与module_name
命名的(可能是因为与路由的MODULE_NAME相关的控制器的名称是相同的)一个对象。我想知道如果我能够以某种方式使用该对象的名称...
是的!谢谢!很高兴知道我也可以在$ routeProvider中定义自定义属性。 – jacob