angular指令ng-if replace:true

时间:2014-12-29 20:26:44

标签: angularjs angularjs-directive angularjs-scope

我真的不知道这里发生了什么 看看这个 plunker

该示例不起作用,仅适用于此模板

<script type="text/ng-template" id="/showErrors.html">
<div>           
    <div data-ng-if="errors">
        <p  class="alert alert-danger fade-in" data-ng-repeat="error in errors" data-ng-bind="error"></p>
    </div>
</div>          
</script>

谁能告诉我为什么?

1 个答案:

答案 0 :(得分:1)

因为当你设置replace: true一个实际的指令div然后它被div替换为模板并且它的属性被合并

例如,将类添加到模板的外部div

 <div class="yes" data-ng-if="errors">---------------------
                                                           |
                                                           | 
      and your directive div is  below                     > replaces and attributs are merged
                                                           |  
    <div show-errors errors="main.errors"></div> ----------

现在当replace = true时,在属性合并之后得到的外部div变为

<div show-errors="" errors="main.errors" 
      class="yes ng-binding ng-scope" data-ng-if="errors">...</div>

所以当替换时,ng-if中的错误在外部div中不可用:true;并且可以在

中找到

尝试replace: false工作正常。这就是为什么你需要额外的div