首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >指令指令通信?

指令指令通信?
EN

Stack Overflow用户
提问于 2015-06-22 23:40:25
回答 1查看 76关注 0票数 0

我有一页有两条指令。1.列出项目的指令,这些项目上有一个属性调用url 2。在接受url并显示它的同一页上的指令。

我想要做的是,当用户单击第一个指令中的一个项时,将该item.url作为参数发送到第二个指令?

这个场景的最佳实践是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-23 03:01:23

实现这一目标的途径不多:

公共父范围属性

具体来说,包含这两个指令的父控制器具有一个用于存储所选URL的属性。然后将该属性传递到两个子指令中。

例如:

代码语言:javascript
运行
复制
<parent>
  <directive-one data-selected-url="selectedUrl"></directive-one>
  <directive-two data-url-to-display="selectedUrl"></directive-two>
</parent>

广播事件

让指令一在两个指令共享的范围上广播事件。

例如:

在指令一中:

代码语言:javascript
运行
复制
$scope.$broadcast('urlSelected', selectedUrl); 

在指令二中:

代码语言:javascript
运行
复制
$scope.$on('urlSelected', function(event, selectedUrl) { ... });

注意:正如我提到的,范围需要是两个指令之间的共享作用域,因为广播将事件发送到作用域链中($emit向上发送)。

访问父控制器

您可以将选定的Url存储在父指令中,并且这两个子指令都需要该指令。然后,它们都可以从父指令中设置/获取属性。

例如,在儿童指令中:

代码语言:javascript
运行
复制
require: 'parentDirective'
link: function (scope, element, attrs, parentCtrl) {...}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30991646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档