Javascript AngularJS等待标记加载到DOM中
我正在通过angular指令将google图表添加到页面中,我想在加载后为它创建的元素添加一个属性。在尝试添加属性之前,确保元素存在的最佳方法是什么 环顾四周,似乎我的指示是我应该工作,但没有:Javascript AngularJS等待标记加载到DOM中,javascript,angularjs,Javascript,Angularjs,我正在通过angular指令将google图表添加到页面中,我想在加载后为它创建的元素添加一个属性。在尝试添加属性之前,确保元素存在的最佳方法是什么 环顾四周,似乎我的指示是我应该工作,但没有: .directive('vdfWidgetGoogleChart', ['$timeout', function ($timeout) { return { restrict: 'E', //replace: true, templateUrl: 'widgetgooglechart.html
.directive('vdfWidgetGoogleChart', ['$timeout', function ($timeout) {
return {
restrict: 'E',
//replace: true,
templateUrl: 'widgetgooglechart.html',
link: function ($scope, elem, attrs) {
function addTabIndex () {
elem.find('svg').attr({tabindex: -1});
}
$timeout(addTabIndex);
},
scope: {
chartObject: '='
}
}
就我个人而言,在绘制图表时,最简单的事情是将属性附加到SVG元素,这样你就变得非常有角度,因为你没有寻找元素 另一个选项是创建一个控制器,然后为需要该控制器的元素SVG创建一个指令。然后,当您将SVG作为该指令的子指令时,您的SVG指令应该被调用。(这是一个猜测,我没有尝试过)
如何呈现
googlechart
元素?我只是使用传入图表对象。我相信下面的答案解决了我的问题。我最终使用了第三个选项,因为我使用了一个第三方指令,该指令调用一个服务来获取html,并且在google图表指令出现在页面上之前,我无法访问它返回的内容。注意:显然“”不支持tabIndex。根据需要,我需要使用focusable=false。
<div controller-directive=".."><svg></svg></div>
function addTabIndex () {
var svg = elem.find('svg');
if (svg.length != 0)
svg.attr({tabindex: -1});
else
$timeout(addTabIndex, 100);
}
$timeout(addTabIndex);