0

我在引导对话框中有一些相当复杂的逻辑,我已将其移至其自己的控制器以进行隔离。

有时我想根据应用程序其他地方(另一个控制器或服务)中发生的某些逻辑启动对话框或调用控制器中的函数。我通过向 ng-controller 元素添加一个 id 然后通过该 id 查找元素并从该控制器的 .scope() 调用事物来实现这一点。本质上是这样的:

在 html 中:

<div id="modalController" ng-controller="modalController">

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

angular.element("#modalController").scope().somefunction()

这似乎很奇怪,我不能只按名称获取控制器。有没有办法做到这一点?

4

1 回答 1

1

创建一个服务并将模型绑定到该服务中维护的数据。对服务中的模型进行更改,它无处不在。

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

另一种方法是使用一个代表系统状态的模型并对其进行修改。根据需要将该模型的相关部分附加到每个小部件的范围内,并且您有一个内置的通信设备。

听起来您正在一个地方进行更改,这应该会导致另一个地方发生更改。如果是这种情况,我认为拥有正确更新模型所有部分的服务是最好的方法。总是想象如果您添加了另一个挂起此功能的小部件,您会做什么。

于 2013-08-26T22:50:45.637 回答