问问题
781 次
1 回答
2
这是来自角度文档的引用:
链接后视图不会更新,直到调用 $digest 之后,这通常由 Angular 自动完成。
这就是为什么您无法在其 id 中找到包含表达式的元素 - 视图当时未更新。
这里的解决方法:
创建元素并将其手动附加到 DOM
这样您就可以引用元素,因此您不必查询它:
link: (scope, element, attributes) => {
let span = $compile('<span id="id{{ ::$id }}_name">Nik Sumeiko, Frontend engineer</span>')(scope);
// do something to span ...
element.append(span);
}
使用 $timeout
您可以$timeout
零延迟使用,这不是错误的方法。$timeout
将在当前周期之后立即执行您的代码$digest
,这意味着在更新视图绑定之后:
link: (scope, element, attributes) => {
$timeout(function() {
let span = element[0].querySelector(`#id${scope.$id}_name`);
});
}
于 2016-06-15T08:32:50.117 回答