控制器中使用 $scope.$emit 和 $scope.$on
$scope.$emit 和 $scope.$ 进行事件通信on 是促进控制器之间事件通信的基本 AngularJS 方法。然而,理解它们的精确行为对于有效实现至关重要。
$emit 方法
$emit 从控制器调度一个事件,通过范围层次结构向上发送它。它允许控制器与父作用域和潜在的其他子作用域进行通信。
$on 方法
$on 侦听其他控制器发出的事件。它的回调函数接收一个事件对象,其中包含有关所发出事件的详细信息,包括传递的数据。
匹配事件名称
使用 $emit 和 $on 时,这一点很重要使用匹配的事件名称。事件名称决定哪些控制器将接收该事件。
范围关系
控制器范围之间的关系决定哪些通信方式有效。
亲子关系
在亲子范围内关系,父控制器中的 $broadcast (发射)和子控制器中的 $on (监听)就足够了。
示例:
function firstCtrl($scope) { $scope.$broadcast('someEvent', [1,2,3]); } function secondCtrl($scope) { $scope.$on('someEvent', function(event, mass) { console.log(mass); }); }
无亲子关系
如果没有亲子关系,则注入控制器中的 $rootScope 并使用 $rootScope.$broadcast 将确保事件到达所有范围。
示例:
function firstCtrl($rootScope) { $rootScope.$broadcast('someEvent', [1,2,3]); }
从子级调度事件到父级
要将事件从子级范围分派到父级范围,请使用子控制器中的 $scope.$emit 和父控制器中的 $scope.$on。
示例:
function firstCtrl($scope) { $scope.$on('someEvent', function(event, data) { console.log(data); }); } function secondCtrl($scope) { $scope.$emit('someEvent', [1,2,3]); }
以上是`$scope.$emit` 和 `$scope.$on` 如何促进 AngularJS 控制器中的事件通信?的详细内容。更多信息请关注PHP中文网其他相关文章!