Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 多父子作用域事件触发器问题_Javascript_Angularjs_Angularjs Rootscope - Fatal编程技术网

Javascript 多父子作用域事件触发器问题

Javascript 多父子作用域事件触发器问题,javascript,angularjs,angularjs-rootscope,Javascript,Angularjs,Angularjs Rootscope,我有一个针对父范围的指令,还有一个针对子范围的指令。在模板中,我有几个父子作用域。像这样 ParentScope1 - ChildScope1 ParentScope2 - ChildScope2 如果我在父级中更改了一个值,我会将它广播给子级。我正在使用$rootScope.$broadcast从家长处进行广播。我正在使用$rootScope.$on接受child中的此更改 我的问题是: 现在,如果我更改ParentScope1中的值,它将广播到ChildScope1。然后我将更改Par

我有一个针对父范围的指令,还有一个针对子范围的指令。在模板中,我有几个父子作用域。像这样

ParentScope1
 - ChildScope1
ParentScope2
 - ChildScope2
如果我在父级中更改了一个值,我会将它广播给子级。我正在使用
$rootScope.$broadcast
从家长处进行广播。我正在使用
$rootScope.$on
接受child中的此更改

我的问题是:

现在,如果我更改ParentScope1中的值,它将广播到ChildScope1。然后我将更改ParentScope2中的一个值,它将广播到ChildScope2,但它也将广播到ChildScope1


我想要:更改ParentScope1中的值,它将广播到ChildScope1。更改ParentScope2中的值,它将广播到ChildScope2。我在线搜索了一段时间,但没有找到解决方案。也许我没有使用正确的关键字来搜索它。请告知。谢谢。

在您对指令集的定义中

scope : true
然后使用

$scope.$broadcast
$scope.$on
这可能很好用


发布代码,以便我们更好地了解指令集定义中的问题

scope : true
然后使用

$scope.$broadcast
$scope.$on
这可能很好用


发布您的代码,以便我们更好地了解问题

您正在寻找父指令和子指令之间的通信,您可以使用以下方法,但使用此方法,两个指令将紧密耦合-

需要控制器-获取父节点指令控制器的同一节点的句柄。 要求:“^parnetDireName”用于查找父节点上的控制器。如果没有^,它将仅为同一节点查找。“?”当控制器可能不可用时使用。“?^”、“?^^”、“^^”。链接函数的第四个参数用于获取控制器。它可以使用控制器属性/方法。您还可以访问多个控制器,因为Require将具有数组-Require:['^dir1','^dir2'].链接功能将具有cntrl数组,并且可以通过相同序列中的数组元素进行访问

嵌套指令的前链接和后链接功能-

  • 默认链接功能是post链接功能
  • 使用关键字post显式定义它
  • 如果父级和子级都具有后期链接功能,则首先执行子级后期链接功能
  • 如果父级和子级都具有预链接功能,则首先执行父级链接功能
  • 控制器在链接功能之前执行
---------------------------------另一种解耦方式--------------------- 有三种方法可以设置指令范围和包含控制器范围之间的关系- -具有共享作用域的指令,包含控制器。任何新的
item/modified item by指令将是父范围的一部分。它是 默认值或范围:false -具有继承作用域的指令。通过包含控制器,指令添加的任何新项都将不可见。指令作用域可以从父作用域读取所有数据。使用scope:true属性将其激活。子作用域可以查看父数据,并可以重写或创建新变量。
-独立作用域。两个作用域无法读取彼此的数据。读取父数据需要对象映射。指令作用域映射将具有对象名称,并且将从html传递相同的对象。有三种方法接收参数- -使用完整的对象数据->'=' -Simple valuelike标志作为字符串使用-“@”。@sampleVar',其中sampleVar是html中变量的名称。 范围{ cntrollerStrVarName:“@htmlStrVarName” }

-函数参数-“&”用于传递参数。可以使用({paramName:'value'})覆盖方法参数

如果要查找父指令和子指令之间的通信,可以使用下面的方法,但使用此方法将两个指令紧密耦合-

需要控制器-获取父节点指令控制器的同一节点的句柄。 Require:“^parnetDireName”用于查找父节点上的控制器。如果没有^,它将仅查找同一节点。“当控制器可能不可用时使用”。“?^”、“?^^”、“^^^”。使用link函数的第四个参数得到控制器。它可以使用控制器属性/方法。您还可以访问多个控制器,因为Require将具有array-Require:['^dir1','^dir2']链接功能将具有cntrl数组,可以通过相同顺序的数组元素访问

嵌套指令的前链接和后链接功能-

  • 默认链接功能是post链接功能
  • 使用关键字post显式定义它
  • 如果父级和子级都具有后期链接功能,则首先执行子级后期链接功能
  • 如果父级和子级都具有预链接功能,则首先执行父级链接功能
  • 控制器在链接功能之前执行
---------------------------------另一种解耦方式--------------------- 有三种方法可以设置指令范围和包含控制器范围之间的关系- -带有共享作用域的指令,带有包含控制器。任何新的
指令项/修改项将是父范围的一部分。它是 默认值或范围:false -具有继承作用域的指令。通过包含控制器,指令添加的任何新项都将不可见。指令作用域可以从父作用域读取所有数据。使用scope:true属性将其激活。子级可以看到父级数据,并可以重写或创建新变量。
-隔离作用域。两个作用域都无法读取彼此的数据。读取父数据需要对象映射。指令作用域映射