JavaScript使用$ scope$ emit和$ scope$ on

问题描述

首先,父子范围关系确实很重要。你有两种可能性发出某些事件:

  • $broadcast -将事件向下分发到所有子范围,
  • $emit-通过范围层次结构向上调度事件。

我对你的控制器(作用域)关系一无所知,但是有几种选择:

如果scope of firstCtrl是作用域的父级,则secondCtrl你的代码应通过替换$emit$broadcastin来工作firstCtrl

function firstCtrl($scope)
{
    $scope.$broadcast('someEvent', [1,2,3]);
}

function secondCtrl($scope)
{
    $scope.$on('someEvent', function(event, mass) { console.log(mass); });
}

如果你的范围之间没有父子关系,则可以注入$rootScope控制器并将事件广播到所有子范围(即secondCtrl)。

function firstCtrl($rootScope)
{
    $rootScope.$broadcast('someEvent', [1,2,3]);
}
  1. 最后,当你需要将事件从子控制器分派到向上作用域时,可以使用$scope.$emit。如果的范围firstCtrl是范围的父级secondCtrl
function firstCtrl($scope)
{
    $scope.$on('someEvent', function(event, data) { console.log(data); });
}

function secondCtrl($scope)
{
    $scope.$emit('someEvent', [1,2,3]);
}

解决方法

如何$scope使用.$emit.$on方法将对象从一个控制器发送到另一个控制器?

function firstCtrl($scope) {
    $scope.$emit('someEvent',[1,2,3]);
}

function secondCtrl($scope) {
    $scope.$on('someEvent',function(mass) { console.log(mass); });
}

它不按我认为的方式工作。如何做$emit$on工作?

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...