跳到主要内容

简述Angular.JS的controller之间如何正确的通信?

参考答案:

在Angular.JS中,控制器之间的通信通常是通过服务(Service)或者工厂(Factory)来实现的。这是因为控制器是Angular.JS的MVC(Model-View-Controller)架构中的一部分,而它们通常不应该直接通信。相反,它们应该通过服务或工厂这样的共享对象来通信。

以下是使用服务进行控制器间通信的基本步骤:

  1. 创建服务:首先,你需要创建一个服务。这个服务可以是一个简单的对象,包含了你想要共享的数据和方法。你可以使用angular.module().service()函数来创建一个服务。
angular.module('myApp').service('sharedService', function() {
  var data = {};

  this.setData = function(newData) {
    data = newData;
  };

  this.getData = function() {
    return data;
  };
});
  1. 在控制器中注入服务:然后,在你的控制器中,你需要注入这个服务。你可以通过依赖注入的方式,将服务作为控制器的参数。
angular.module('myApp').controller('controller1', function($scope, sharedService) {
  $scope.data = sharedService.getData();

  $scope.setData = function(newData) {
    sharedService.setData(newData);
  };
});

angular.module('myApp').controller('controller2', function($scope, sharedService) {
  $scope.data = sharedService.getData();

  $scope.setData = function(newData) {
    sharedService.setData(newData);
  };
});

这样,controller1controller2就可以通过sharedService服务来共享数据了。一个控制器可以通过sharedService.setData()方法来设置数据,而另一个控制器可以通过sharedService.getData()方法来获取数据。

请注意,这只是一个基本的示例,你可能需要根据你的具体需求来修改或扩展这个服务。例如,你可能需要添加更多的方法,或者处理更复杂的数据结构。