繁体   English   中英

多个父子范围事件触发问题

[英]Multiple parent-child scope event trigger issue

我有一个父范围的指令,也有另一个子范围的指令。 在模板中,我有几个父子范围。 像这样。

ParentScope1
 - ChildScope1
ParentScope2
 - ChildScope2

如果更改“父级”中的值,则将其广播给“子级”。 我正在使用$rootScope.$broadcast broadcast从父级广播。 我正在使用$rootScope.$on接受此子项更改。

我的问题是:

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

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

在您的指令集定义中

scope : true

然后使用

$scope.$broadcast
$scope.$on

这可能应该很好

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

您正在寻找父子指令之间的通信,可以使用以下方法,但是两个指令将通过以下方式紧密结合:

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

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

  • 默认链接功能是发布链接功能。
  • 使用关键字发布明确定义它
  • 如果父母和孩子都具有邮政链接功能,则首先执行子邮政链接功能
  • 如果父子都具有预链接功能,则首先执行父链接功能。
  • 在链接功能之前执行控制器

--------------------------------- 另一种解耦方式 -------------- -------可以通过三种方式来设置指令范围和包含控制器范围之间的关系--与包含控制器共享范围的指令。 任何新
item /通过指令修改的item将成为父范围的一部分。 它是default或scope: false-具有继承的scope的指令。 指令添加的任何新项目都将无法通过包含控制器看到。 指令范围可以从父范围读取所有数据。 使用scope:true属性将其激活。 子级可以看到父级数据,并且可以覆盖或创建新变量。
- 隔离范围 两者都无法互相读取数据。 需要对象映射才能读取父数据。 指令范围映射将具有对象名称,并且将从html传递相同的对象。 有三种接收参数的方法--使用完整对象数据 ->'='-使用简单值(例如标记为字符串)-'@'。 '@sampleVar',其中sampleVar是html中变量的名称。 范围{cntrollerStrVarName:'@htmlStrVarName'}
- 函数参数 -'&'用于传递参数。 可以使用({paramName:'value'})覆盖方法参数

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM