ng-if不删除子元素?

时间:2015-12-01 18:12:45

标签: angularjs

根据docs

  

如果表达式为falsy,则从DOM中删除该元素   树。如果它是真实的,则编译元素的副本被添加到   DOM树。

(我正在使用ver 1.4.8)

但是看看plunker

我有这个标记:

 <p ng-if="null">
        <p ng-include="'1.html'">***</p>
 </p>

1.html的位置:

1.html
<div ng-controller="ctrl1">
  {{a}}
</div>

控制器在哪里:

var app = angular.module("myApp",[]);
app.controller('ctrl1',function ($scope){$scope.a=1});

但输出是:

1.html
1

问题

我做了ng-if="null"null是一个假值。 为什么它仍然显示内在内容?

ps - 如果我放一个常规标签:

  <p ng-if="null">
        <b>Hello</b>
  </p>

它不会显示它。

1 个答案:

答案 0 :(得分:4)

您的html无效,意味着您无法使用嵌套的p代码,内部p代码会被抛弃。

  

P元素代表一个段落。它不能包含块级   元素(包括P本身)。

HTML下方

<p ng-if="null">
    <p ng-include="'1.html'">***</p>
</p>

呈现为

<p ng-if="null"></p>
<p ng-include="'1.html'">***</p>

Detailed Answer