【发布时间】:2014-02-12 20:00:24
【问题描述】:
我有一个 Angular 应用程序,我目前正在使用 $routeProvider 将 URL 路由到带有 ng-view 指令的模板:
app.js
.config( function ($interpolateProvider, $routeProvider) {
$routeProvider
.when('/project/:projectId', {
// this is the partial...
templateUrl : 'partials/_project_detail.html',
controller: 'ProjectDetailCtrl',
resolve: {
project: function ($route, MyService) {
return MyService.get('projects/', $route.current.params.projectId);
}
})
})
.controller('ProjectDetailCtrl', function ($scope, project) {
...
$scope.project = project;
})
index.html
...
<div ng-view></div>
...
现在,我想使用控制器范围继承在父控制器中拥有一个子控制器,如下所示:
project_detail.tmpl.html
...
<h2>Project: {{ project.title }}</h2> <!-- this works -->
<div ng-controller="ChildCtrl">
<h2>Project: {{ project.title }}</h2> <!-- this doesn't work -->
</div>
...
但这似乎不起作用。我知道根据 Angular 文档,如果在模板中声明了两个控制器,您可以在父范围和子范围之间继承范围:http://docs.angularjs.org/guide/controller
有没有办法使用router方法实现继承?
【问题讨论】:
-
试试 $rootScope.project = project;
-
嗯。这种破坏了范围继承的对象。如果我绑定到
$rootScope,那么子控制器就不需要嵌套,它可以在任何地方。我宁愿将范围对象保留在这两个控制器中。