Angular 获取共享指令的所有元素的列表
Angular get a list of all elements which share directive
如何获取共享指令的所有元素的数组,以便我可以迭代它们并让它们彼此做不同的事情?
我有一个用于多个元素的指令,并且根据每个使用restrict: 'A'
的指令的属性值,我需要这些指令在链接函数中相互通信并以不同的方式相互影响。
我试过使用:
link : function(scope, elem, attr) {
attr.forEach(function(e, i) {
if(attr[i] === 'menu') {
//do something
} else if (attr[i] === 'scroll') {
//do something else
}
});
}
但我得到 forEach 作为一个未定义的函数。我也尝试了一个简单的 for 循环,但两者都有:
elem.length
和
attr.length
给我未定义。
请注意,我不想使用具有不同逻辑的不同指令,因为我需要每个元素实际执行特定于其他元素的操作。
我可以使用 jQuery 直接选择元素,但由于几个原因,这不太理想。
创建一个服务,将其注入到所需的每个指令中,然后可以迭代它们。
这就是跨指令和控制器共享数据的方式。
编辑
您可以创建一个包含所有元素的全局数组。现在,您可以遍历所有这些内容。这是一个笨蛋。
app.directive('thing', function(){
var elements = [];
return {
restrict: 'E',
link: function(scope, element, attrs){
element.text('hello');
elements.push(element);
console.log(elements);
}
};
});
使用 jquery has-attribute selector:
var menuElements = $('[menu]');
var scrollElements = $('[scroll]');
并迭代元素:
elements.each(function(index, elem) {
...
});
相关文章:
- 如何附加<ul><李>元素位于某个特定条件的父元素列表之间
- 在元素列表中搜索给定字符串
- 生成ACF标记位置的数组(元素列表后缺少])
- 如何删除元素列表中的类并添加到另一个元素 Jquery.
- 什么'这是ES6中制作重复元素列表的等效方法
- jQuery单击并显示元素列表
- 如何在元素列表上使用jquery选择器
- 如何使用 Cycle.js 创建动态、重复的元素列表
- dc.js:如何在对象元素列表上减少计数
- 语法错误:使用 setInterval 时元素列表后缺少 ]
- 错误:火狐在元素列表后给我“缺少]”
- 使用字符串元素列表作为 Select2 组件的源
- 使用 jQuery 从元素列表创建特定属性的数组
- document.createElement();是否有我可以创建的元素列表
- 断言元素列表遵循带有 JavaScript 承诺的规则
- 在 jquery 中动态创建元素列表的最佳实践
- 如何使用 .nextUntil 将两个不同的类添加到
元素列表中
- 如何将一个元素列表移动到另一个性能最佳的元素中
- Javascript - 缺少 ] 在元素列表之后
- jquery中的li元素列表