简述Angular.JS的controller之间如何正确的通信?
参考答案:
在Angular.JS中,控制器之间的通信通常是通过服务(Service)或者工厂(Factory)来实现的。这是因为控制器是Angular.JS的MVC(Model-View-Controller)架构中的一部分,而它们通常不应该直接通信。相反,它们应该通过服务或工厂这样的共享对象来通信。
以下是使用服务进行控制器间通信的基本步骤:
- 创建服务:首先,你需要创建一个服务。这个服务可以是一个简单的对象,包含了你想要共享的数据和方法。你可以使用
angular.module().service()
函数来创建一个服务。
angular.module('myApp').service('sharedService', function() {
var data = {};
this.setData = function(newData) {
data = newData;
};
this.getData = function() {
return data;
};
});
- 在控制器中注入服务:然后,在你的控制器中,你需要注入这个服务。你可以通过依赖注入的方式,将服务作为控制器的参数。
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);
};
});
这样,controller1
和controller2
就可以通过sharedService
服务来共享数据了。一个控制器可以通过sharedService.setData()
方法来设置数据,而另一个控制器可以通过sharedService.getData()
方法来获取数据。
请注意,这只是一个基本的示例,你可能需要根据你的具体需求来修改或扩展这个服务。例如,你可能需要添加更多的方法,或者处理更复杂的数据结构。