Javascript 如何获取窗体的控制器

Javascript 如何获取窗体的控制器,javascript,html,angularjs,Javascript,Html,Angularjs,假设我有几个表单,每个表单都有自己的控制器,看起来像这样 <div ng-controller="MyController1 as ctrl"> <label>Some label </label> </div> <div ng-controller="MyController2 as ctrl"> <label>Some label </label> </div> 一些标签

假设我有几个表单,每个表单都有自己的控制器,看起来像这样

 <div ng-controller="MyController1 as ctrl">
    <label>Some label </label>
</div>

<div ng-controller="MyController2 as ctrl">
    <label>Some label </label>
</div>

一些标签
一些标签

我有一个全局控制器,它获取关于表单名称的信息。现在我想找到每个表单的控制器。例如,如果在我的全局控制器函数中,我得到了第一个表单的名称,我如何才能发现它的控制器是MyController1?这可能吗

可以从另一个控制器调用控制器。但是,我相信你试图解决的问题在其他地方:你的应用程序的架构

理想情况下,你的应用程序应该对状态的变化做出“反应”。国家应该被保存在一个地方(也称为“单一真相来源”),即服务。然后,您可以根据需要与尽可能多的控制器共享该服务状态

您可以直接从控制器更新服务状态,也可以通过调用服务本身的方法来更新服务状态

看看下面的例子。我希望这能给我们一些启示

干杯

angular.module('app',[])
.service('MyService',function()){
var self=这个;
自我状态={
名字:“约翰”
};
self.changeNameFromService=函数(){
self.state.name='Peter';
}
})
.controller('Ctrl1',函数($scope,MyService){
$scope.state=MyService.state;
$scope.changeName=函数(){
//更新作用域的状态,通过将状态存储在服务中与其他控制器共享
$scope.state.name='Mary';
}
})
.controller('Ctrl2',函数($scope,MyService){
$scope.state=MyService.state;
//调用服务中定义的方法
$scope.changeName=MyService.changeNameFromService;
})

Ctrl1:{{state.name}
改名!
Ctrl2:{{state.name}
更改服务名称!

闻起来像“使用AngularJS工厂”。可能与Hi重复,谢谢您的评论和示例代码。我来看看。但为了避免任何误解@jorgobregon:我只想知道控制器的名称,我不想从另一个控制器那里调用它。有没有一个简单的方法可以做到这一点?