在 AngularJS 中,一个控制器可以调用另一个控制器。有多种方法可以实现此目的,每种方法都有自己的优点和用例。
在提供的示例中,HTML 文档使用 MessageCtrl 控制器来显示消息。要从另一个控制器传递数据,您可以创建一个调解通信的服务。
<br>angular.module('myApp', []).<br> service('DataService' , function() {<pre class="brush:php;toolbar:false">this.data = { date: new Date().toString() };
}).
控制器('MessageCtrl', ['$scope', 'DataService', function($scope, DataService) {
$scope.message = DataService.data.date;
}]).
控制器('DateCtrl', ['DataService', function(DataService) {
DataService.data.date = 'Custom date format';
}]);
在这种情况下,MessageCtrl 有访问DataService,DateCtrl也使用它来修改日期格式。这确保了控制器之间的同步通信。
另一种方法是在作用域上发出事件。当事件发出时,所有为该事件注册了侦听器的控制器都可以响应。
<br>angular.module('myApp', []).<br>controller(' MessageCtrl', ['$scope', function($scope) {<pre class="brush:php;toolbar:false">$scope.$on('dateUpdated', function(event, newDate) { $scope.message = newDate; });
}]).
controller('DateCtrl', ['$scope', function($scope) {
$scope.$emit('dateUpdated', 'Custom date format');
}]);
在此示例中,DateCtrl发出 MessageCtrl 侦听的事件并通过更新其消息来响应。这允许更具反应性的通信模式。
这些只是 AngularJS 中实现控制器间通信的几种方法。最佳方法取决于您应用程序的具体要求。
以上是AngularJS 中控制器如何相互通信?的详细内容。更多信息请关注PHP中文网其他相关文章!