AngularJS等待标签加载到DOM中
AngularJS wait for tag to load into DOM
我通过angular指令添加一个谷歌图表到一个页面,我想添加一个属性到它加载后创建的元素。在尝试添加属性之前,确保元素存在的最佳方法是什么?
从周围看,似乎我的指令,我应该工作,但没有:
.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指令应该被调用。(这是一个猜测,我没有尝试过)
<div controller-directive=".."><svg></svg></div>
那么当控制器作为父控制器存在时,您的代码将具有SVG。
或者你可以简单地调整你的代码,每100毫秒左右寻找svg,直到你找到它。
function addTabIndex () {
var svg = elem.find('svg');
if (svg.length != 0)
svg.attr({tabindex: -1});
else
$timeout(addTabIndex, 100);
}
$timeout(addTabIndex);
相关文章:
- 在DOM加载时触发函数
- 即使在 DOM 加载后也无法设置 null 的 .innerHTML
- 如何获取javascript/dom加载和处理时间的指标
- angularjs 子指令 DOM 加载速度不够快
- 如何在 DOM 加载后使用 JavaScript 或 JQuery 从 href 属性中删除字符
- 如何激活 bootstrap.tagsinput 用于 DOM 加载后添加的输入
- 计算表中的行数(如果行是在 DOM 加载后创建的)
- 如何等到 DOM 加载后再将脚本标记添加到
- jQuery:在 DOM 加载 .on() 和 .click() 后点击 Chrome
- Javascript:使用dom加载的页面进行匹配
- 使用CSS3的供应商特定前缀的性能和DOM加载
- 在dom加载后包含外部脚本
- Dom加载事件跨浏览器原生javascript代码
- DOM加载时的断点
- DOM加载和引用Javascript函数中的元素
- 高度:自动计算错误,如果元素隐藏时dom加载,然后显示
- 如何在DOM加载后运行jQuery的备用副本?
- 在DOM加载并显示在浏览器中之前修改body HTML内容
- 搜索DOM加载的页面
- 使用文档时,在DOM加载后添加的按钮上单击事件不运行