使angularjs应用程序的不同部分相互通信的首选方法是什么?

时间:2015-03-02 09:48:41

标签: angularjs custom-events

我想知道让应用的不同部分互相交互的首选方法是什么。

例如,假设我们有一个指令A,用于在用户的购物篮中显示产品。该指令可以访问允许对项目进行CRUD操作的持久性服务。

我们还要说我们有一个显示一般信息的指令B

现在用户决定从他的购物篮中删除产品。让它以这种方式发布事件是否可以接受?:

 $scope.$emit("item-deleted");

然后让B听取此类事件:

$scope.$on("data-received", function(event, next, current) {
  // show up and tell "item deleted succesfully"       
}); 

这是实现结果的好方法吗?它绝对是在其他框架和UI开发中。如果它是一种可行的角度方式,我只是在想它。

由于

2 个答案:

答案 0 :(得分:1)

您应该使用服务而不是事件传播。通过依赖注入,它非常易于使用。这是使两个控制器相互通信的最佳方式。

有关服务的更多信息:https://docs.angularjs.org/guide/services

答案 1 :(得分:0)

为指令B创建一个服务,它将为一般消息提供数据。 将该服务注入指令A的底层服务。然后使用正确的消息调用该服务。

指令A应自动显示此数据,因为angularjs的双向数据绑定。