0
4

1 回答 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 回答