如何使用已存在于路由更改中的AngularJS控制器?

如何使用已存在于路由更改中的AngularJS控制器?,angularjs,Angularjs,我有这个html: <div ng-controller="MyCtrl"> <div ng-view></div> </div> <script type="text/ng-template" id="/a"> // SomeHtml with Angular templates </script> <script type="text/ng-template" id="/b"> // Some

我有这个html:

<div ng-controller="MyCtrl">
  <div ng-view></div>
</div>

<script type="text/ng-template" id="/a">
  // SomeHtml with Angular templates
</script>

<script type="text/ng-template" id="/b">
  // SomeHtml with Angular templates
</script>
控制器“MyCtrl”有一些引导代码,在首次加载html时调用这些代码,该引导代码设置了“/a”和“/b”模板都应该使用的一些状态。模板“/a”和“/b”将显示引导过程中获得的数据,以不同的方式呈现


我希望没有控制器,但仍然能够从模板访问MyCtrl作用域。

您的模板控制器将有一个父控制器(您所谓的包装控制器),它将继承该父控制器。因此,您可以从包装控制器执行函数和访问属性

function TemplateAController($scope) {
 ...
}

function WrappingController($scope) {
   $scope.execute = function() {
      ...
   }
    ...
   }
在模板中:

<a ng-click="execute()">Execute</a>
执行

我会移除包装控制器,让我的路线都有自己的控制器。如果这些控制器需要共享数据,那么我会添加一个专用对象,将这些数据保存到控制器的依赖项列表中。这里有一个例子:

在Angular网站旁边说,你应该指向一些你不需要的控制器,如果具有
ng view
属性的标记被包装到另一个具有
ng controller
的标记中,则呈现的模板将能够像往常一样访问父范围。

我不理解这个问题。有两条路由由同一个控制器控制,有什么问题吗?听起来不错,但有一种方法可以设置依赖项的生存时间?同样,在其他DI容器中,我希望将组件设置为应用程序范围等,这样我就能够在正确的时间引导它并注入它以使用获得的数据。据我所知,服务是angularjs中的单例。我将定义一个保存并使用共享数据的服务。
<a ng-click="execute()">Execute</a>