Javascript 调用AngularJS中的控制器或在控制器之间调用

Javascript 调用AngularJS中的控制器或在控制器之间调用,javascript,angularjs,Javascript,Angularjs,我在一个引导对话框中有一些相当复杂的逻辑,我把它移到了自己的控制器中进行隔离 有时,我希望根据应用程序中其他地方出现的逻辑启动对话框或调用控制器中的函数—在另一个控制器或服务中。我通过向ng控制器元素添加一个id,然后根据该id查找元素,并调用该控制器的.scope()来实现这一点。基本上是: 在html中: 在另一个服务或控制器中: angular.element(“#modalController”).scope().somefunction() 这看起来很奇怪,我不能直接用名字来命名控制

我在一个引导对话框中有一些相当复杂的逻辑,我把它移到了自己的控制器中进行隔离

有时,我希望根据应用程序中其他地方出现的逻辑启动对话框或调用控制器中的函数—在另一个控制器或服务中。我通过向ng控制器元素添加一个id,然后根据该id查找元素,并调用该控制器的.scope()来实现这一点。基本上是:

在html中:

在另一个服务或控制器中:

angular.element(“#modalController”).scope().somefunction()


这看起来很奇怪,我不能直接用名字来命名控制器。有办法做到这一点吗?

创建一个服务并将模型绑定到该服务中维护的数据。在服务中对模型进行更改,它会在任何地方进行更改

您还可以创建一个服务,为需要进行的更改提供一个pubsub接口

另一种方法是使用一个表示系统状态的模型,并对其进行修改。根据需要将该模型的相关部分附加到每个小部件的作用域中,这样就内置了一个通信设备


听起来你在一个地方做出的改变应该会引起另一个地方的改变。如果是这样的话,我认为拥有一个能够正确更新模型所有部分的服务是最好的方式。始终想象一下,如果您添加了另一个挂起此功能的小部件,您会做些什么。

您的描述有点难以理解,但我建议可能使用“广播”和“打开”。@ZackArgyle我很高兴澄清-什么部分难以理解?起初我使用的是“OpenModel”和“CloseModel”布尔值来控制我要打开的每个对话框。感觉有点沉重。从这个描述来看,感觉情态动词应该由服务直接控制。