Javascript 角度域中同级作用域之间的通信
这是如何在范围同级的两个组件之间正确通信的吗Javascript 角度域中同级作用域之间的通信,javascript,angularjs,Javascript,Angularjs,这是如何在范围同级的两个组件之间正确通信的吗 Ctrl1向Ctrl1和Ctrl2的父范围发出事件 父作用域侦听从Ctrl1发出的事件,然后将另一个事件向下广播到Ctrl2 Ctrl2从父作用域侦听广播的事件 是的,这就是我如何在同级作用域之间进行角度通信。通常,我认为Ctrl1向其所有子作用域发出“up”,并在侦听事件的父作用域上发出“on”,父作用域向所有子作用域广播“down”。在这种情况下,Ctrl2应该在“开”上设置一些内容,以便在听到事件后执行某些操作 作为旁注,我做了一些类似的事情,
是的,这就是我如何在同级作用域之间进行角度通信。通常,我认为Ctrl1向其所有子作用域发出“up”,并在侦听事件的父作用域上发出“on”,父作用域向所有子作用域广播“down”。在这种情况下,Ctrl2应该在“开”上设置一些内容,以便在听到事件后执行某些操作
作为旁注,我做了一些类似的事情,我使用rootScope作为一个集中式事件总线,它侦听不同子scope的事件,然后执行一些任务或再次向下广播。然后,子作用域将负责向上发送到根作用域。好吧-从技术上讲,在向上与父控制器通信时,您不需要使用
$emit
,子作用域具有访问权限。但在向下与子范围通信时,确实需要$broadcast
:
app.controller("parentCtrl", function($scope) {
$scope.testMe = function() {
$scope.$broadcast("done"); //transmit to ctrl2
}
});
app.controller("childCtrl1", function($scope) {
$scope.testMe(); //call parent
});
app.controller("childCtrl2", function($scope) {
$scope.$on("done", function() {
alert("Caught parent event");
});
});
如果
childCtrl1
中的范围实际上是指令的隔离范围,该怎么办?