为啥在使用 d3 创建 AngularJS 指令时使用 element[0] 而不是 element?
Posted
技术标签:
【中文标题】为啥在使用 d3 创建 AngularJS 指令时使用 element[0] 而不是 element?【英文标题】:Why use element[0] instead of element when creating AngularJS directive with d3?为什么在使用 d3 创建 AngularJS 指令时使用 element[0] 而不是 element? 【发布时间】:2014-04-15 18:08:46 【问题描述】:在使用 D3 创建指令时,您似乎必须使用element[0]
,例如,如下所示:
app.directive('firstTry', function ()
function link(scope, element, attrs)
var sampleSVG = d3.select(element[0])
...
那么,为什么是element[0]
而不是element
? element
这个名字暗示它是一个单一的对象而不是一个数组,但显然情况并非如此。另一个问题:这个element
还有什么?
顺便说一句,任何有关此事的官方参考资料都会有很大帮助。
非常感谢。
【问题讨论】:
console.dir(element)
应该已经为您提供了更多信息。
【参考方案1】:
想要修改 DOM 的指令通常使用
link
选项。link
采用具有以下签名的函数function link(scope, element, attrs) ...
其中:scope
是一个 Angular 范围对象。element
是该指令匹配的 jqLite 包装元素。attrs
是一个哈希对象,具有规范化属性名称的键值对及其对应的属性值。
您可以在文档 here 中找到它。所以要键入 htmlElement 实体 - 获取集合的第一个成员
【讨论】:
以上是关于为啥在使用 d3 创建 AngularJS 指令时使用 element[0] 而不是 element?的主要内容,如果未能解决你的问题,请参考以下文章
D3.js 4 与 AngularJS 1.5(组件或指令?)