Javascript AngularJS等待标记加载到DOM中

Javascript AngularJS等待标记加载到DOM中,javascript,angularjs,Javascript,Angularjs,我正在通过angular指令将google图表添加到页面中,我想在加载后为它创建的元素添加一个属性。在尝试添加属性之前,确保元素存在的最佳方法是什么 环顾四周,似乎我的指示是我应该工作,但没有: .directive('vdfWidgetGoogleChart', ['$timeout', function ($timeout) { return { restrict: 'E', //replace: true, templateUrl: 'widgetgooglechart.html

我正在通过angular指令将google图表添加到页面中,我想在加载后为它创建的元素添加一个属性。在尝试添加属性之前,确保元素存在的最佳方法是什么

环顾四周,似乎我的指示是我应该工作,但没有:

.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);