[英]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.