在 Angular 中,在两个不同的指令之间传达匹配的$index
In Angular, Communicating a matching $index between two different directives
我有两个指令:
<wa-svg ng-repeat="page in Pages" ng-mouseover="showTooltip($index)>
<wa-tooltip ng-repeat="page in Pages" ng-class="{on: matchedIndex}">
问题:
将鼠标悬停在特定wa-svg
上时,如何匹配wa-svg
的$index
以使wa-tooltip
matchedIndex
返回 true。 因此,on
类被附加到wa-tooltip
我相信这将需要一个孤立的范围,或者可能通过ng-model
但这令人困惑。
注意:我无法嵌套这些元素,因为wa-svg是一个svg对象,除非使用foreignObject和等等,否则你不能很好地嵌套。
嗯,
那么共享控制器怎么样?
具有此功能的包装控制器:
$scope.showTooltip= function($index) {
$scope.hoveredIndex = $index;
}
在您的工具提示指令中执行以下操作:
<wa-tooltip ng-repeat="page in pages" ng-class="{on: $index === hoveredIndex}">
这对你有用吗?
这应该有效:
<div ng-init="hovered = {}">
<wa-svg ng-repeat="page in Pages" ng-mouseover="hovered.index = $index" />
<wa-tooltip ng-repeat="page in Pages" ng-class="{on: hovered.index == $index}" />
</div>
总结一下:将鼠标悬停在wa-svg
上会设置hovered.index
,您可以在 wa-tooltip
中访问该 。
hovered = {}
部分的唯一原因是转发器会创建新的作用域,因此我在新作用域之外创建了一个对象,以便可以从两个转发器访问索引。 您可以/应该将该语句放入控制器中。
相关文章:
- Angularjs事件与发布/订阅指令之间的通信
- 指令之间的连接(Angular 1.4.8)
- angularjs 中控制器和指令之间的通信
- angularjs+ui.router:指令控制器和链接函数之间的不同行为
- 父关系指令和子关系指令之间的绑定
- 控制器和外部指令之间的双向数据绑定
- 在更改时选择,插入类似函数的参数或指令之间的差异
- 正确的方法-Angular JS中指令之间的通信
- AngularJS:图片上传+文件阅读器预览.控制器、指令和作用域之间的绑定出现问题
- 使用 TypeScript 在 AngularJS 中的指令之间共享来自异步调用的数据
- 指令控制器和普通控制器之间的区别
- 使用指令在 1000 条记录上的两个表之间进行角度拖放
- 服务和指令之间的通信:依赖关系或或事件
- 指令和控制器之间的双向通信
- 使用嵌入时,元素和属性指令之间是否有区别
- 在指令和嵌套指令之间共享模型
- 指令和控制器之间的通信,中间作用域介于两者之间
- AngularJS最佳实践 - 指令之间的通信无需$rootScope
- 在指令之间共享范围 - 缺少$http
- AngularJS在父级和子级范围指令之间共享数据