为什么Angular要把ng-scope类放在一个没有附加作用域的元素上?

Why is Angular putting the ng-scope class on an element that doesn't have a scope attached

本文关键字:作用域 元素 一个 ng-scope 要把 Angular 为什么      更新时间:2023-09-26

我有一个jQuery插件,可以进行模板转换,还有一个Angular指令,在插件在生成的DOM节点上运行后,通过调用$compile与插件集成:

//in the link function of tiFormRender directive
element.empty();
compileForm(newForm, tiForms.frameworks(), element);
$compile(element.children())(scope);

这样可以正确处理插件生成的子树中的指令,但是由于某些原因,它将ng-scope类添加到编译后的模板中:

<div ti-form-render="testForm">
    <md-content class="layout-padding ng-scope layout-row">
        <-- more DOM -->    
    </md-content>
</div>

ti-form-render元素(没有创建作用域的原始指令)和md-content元素具有与我期望的相同的作用域(与element.scope()验证),那么为什么Angular将ng-scope类附加到实际上没有作用域的元素上?

ng-scope被添加到任何附加了作用域的元素中(一个作用域可以在多个地方附加),并且由于$compile进程将作用域附加到模板中,它将类添加到已处理的模板中。它只是看起来有点奇怪,因为它附加的作用域与父元素相同,这是由于我的hack解决方案。