如何使用已存在于路由更改中的AngularJS控制器?
我有这个html:如何使用已存在于路由更改中的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
<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>