将服务方法绑定到我的前端 - Angular

时间:2014-06-24 20:00:34

标签: angularjs

我在Angular中有一个服务,其中有一个方法 - 比如GetName()返回someones名称

我想在我的html中能够执行类似{{$ scope.GetName()}}的操作,并将此绑定到我的方法结果。我的主要问题是如果我的服务中的名称发生了变化(通过另一个控制器),那么我希望我的{{.....}}发生变化。

希望这是有道理的。

此致 雅尼斯

1 个答案:

答案 0 :(得分:0)

您无法将动态服务调用绑定到DOM元素。

准确地说,最好的方法是$watch用于服务中的名称更改,并在更改时使用回调函数。您还需要一种方法来通知控制器名称已更改,因此还应设置事件侦听器。监听器将调用将更新范围变量的函数,例如$scope.nameFromService。然后在你的HTML中,你只需要在控制器部分内部:

{{nameFromService}}

同样,为了说清楚,这是发生的事情:

  • 另一个控制器更改服务中的值
  • $watch被触发并调用一个函数(其中包括)触发事件
  • 控制器中的事件侦听器接收事件并更新范围变量
  • Angular自动更新DOM

更新

如果你可以改变你的服务,我实际上会避免整个$watch事情,只是修改名字设置器功能,以便在调用时触发事件。这样,所有控制器都可以知道名称更改。