我正在使用带有角度的打字稿并尝试创建自定义指令。 我正在尝试提供所有参数类型,但不确定通过 $element 参数传递的对象是什么类型。 是JQuery类型吗? 还是某种元素类型?
在指令代码中,我想将$element与 d3 选择器一起使用。 (即 d3.select($element)) 目前 d3 选择语句不起作用,因为 $element 类型不是 d3 期望的类型。 (我也在为 d3 使用打字稿界面。
var directiveDefinitionObject : ng.IDirective = {
restrict: 'E',
replace: false,
scope: { data: '=chartData' },
link: ($scope: ICustomScope, $element: <WHAT_TYPE?>) => {
d3.select($element); // d3.select(node)
}
};
的link
函数中的$element
具有ng.IAugmentedJQuery
类型。如果你包含jQuery,那么你将在$element
上得到jQuery函数,没有jQuery,那么Angular将提供jqLite。有关更多信息,请参阅此处。
ng.IDirective
中的link
函数定义为:
link?: (scope: IScope,
instanceElement: IAugmentedJQuery,
instanceAttributes: IAttributes,
controller: any,
transclude: ITranscludeFunction
) => void;